我有一個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