2013-02-14 36 views

回答

0

是否有可能重写“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访问的公共变量。

3

在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> 
相关问题