我有一个Java Servlet的有以下@WebServlet
注释:如何在不重新编译的情况下覆盖servlet的@WebInitParam?
@WebServlet(urlPatterns={"/GetInfo"},
initParams={
@WebInitParam(name="directory.path", value="/appli/PdlInfo")})
如何更改的@WebInitParam
值而无需重新编译的servlet?
我有一个Java Servlet的有以下@WebServlet
注释:如何在不重新编译的情况下覆盖servlet的@WebInitParam?
@WebServlet(urlPatterns={"/GetInfo"},
initParams={
@WebInitParam(name="directory.path", value="/appli/PdlInfo")})
如何更改的@WebInitParam
值而无需重新编译的servlet?
是否有可能重写“directory.path”变量而不重新编译类。将web.xml
文件添加到您的WEB-INF
文件夹中,该文件夹定义了一个新的init参数。
将servlet-class
更改为您正在使用的实际servlet类。
需要重新启动容器才能考虑更改,但不需要重新编译/重新构建。
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<servlet>
<servlet-name>MyServletLinkName</servlet-name>
<servlet-class>your.path.to.servlet.YourServlet</servlet-class>
<init-param>
<param-name>directory.path</param-name>
<param-value>/new/path</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>MyServletLinkName</servlet-name>
<url-pattern>/GetInfo</url-pattern>
</servlet-mapping>
</web-app>
编辑:
如果你想使用改变应用程序运行时,您可以使用一个属性文件,它是由一个线程观看和X的间隔检查动态参数秒。
您可以使用包含文件位置和上下文初始化侦听器的上下文参数。监听器创建一个观察器线程,该线程更新一些可供所有servlet访问的公共变量。
在Servlet 3.0中,注释仅提供默认值。 只需使用web.xml文件(或部署时在容器上提供的工具)即可更改它。这两种情况下,你需要给servlet的一个有意义的名称:
@WebServlet(
name="GetInfo"
urlPatterns={"/GetInfo"},
initParams={@WebInitParam(name="directory.path",value="/appli/PdlInfo")}
)
对于web.xml中这里是一个片段:
<servlet>
<servlet-name>GetInfo</servlet-name>
<init-param>
<param-name>directory.path</param-name>
<param-value>/other/path</param-value>
</init-param>
</servlet>
你要看看你的网页的初始化,PARAM节.XML – YMomb 2013-02-14 14:02:39