2013-02-14 100 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> 
相關問題