我们有一个小型Provisioning服务器,它只托管servlet。托管在tomcat上。 servlet中很少有硬编码的值,我想使其可配置或外部,以便可以在不更改servlet的情况下修改它们。 任何人都可以建议我的选项是什么?
答案 0 :(得分:1)
我能想到的选项:
Java EE 7 tutorial - Servlets (Servlet 3.1)
P.S:我刚给你指点,你可以在互联网上轻松获得如何实现这一目标的例子。
答案 1 :(得分:1)
有几个选择:
如果值是 servlet特定的,您可以在部署描述符中将它们配置为 Servlet Init-Parameter ( web.xml < / em>文件):
<servlet>
<servlet-name></servlet-name>
<servlet-class></servlet-class>
<init-param>
<param-name>${param-name}</param-name>
<param-value>${param-value}</param-value>
</init-param>
</servlet>
使用ServletConfig#getInitParameter(String)
获取它们:
getServletConfig().getInitParameter(paramName);
如果值特定于网络应用,您可以将它们配置为上下文参数:
<web-app ...>
<context-param>
<param-name>${param-name}</param-name>
<param-value>${param-value}</param-value>
</context-param>
</web-app>
使用ServletContext#getInitParameter(String)
获取它们:
getServletContext().getInitParameter(paramName);
另一种选择是在属性文件中包含这些值,并在servlet中加载它们的值。您可以将属性文件添加到Web-App类路径(您可以将其放在/WEB-INF/classes
文件夹中,或者如果您使用的是Eclipse IDE,只需将其放在/src
文件夹中,然后将其加载为资源:
Properties props = new Properties();
props.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("webapp.properties"));
另见:
答案 2 :(得分:0)
您可以将init参数提供给servlet,该servlet可以在web.xml中配置。本教程可以帮助您实现所需:
答案 3 :(得分:0)
众所周知,有很多方法。这是另一种方法(这就是我现在所做的)
Constants
Class
(公共Static
字符串常量)
名为XMl
的{{1}}文件,例如veriosn名称,分支名称等
properties.xml
<property name="version">XX..XX</property>
<property name="branch">XX.13.</property>
中的
web.xml
当您启动 <servlet>
<servlet-name>StartUpServlet</servlet-name>
<display-name>StartUpServlet</display-name>
<servlet-class>com.nextenders.server.StartUpServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
我的tomcat
StartUpServlet
因此,在触摸应用时,更改public class StartUpServlet extends HttpServlet{
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
public void init() throws ServletException {
super.init();
setVersion(); //I'l parse that file and assign constants.And use else where
}
中的属性并重新启动xml