我正在使用tomcat 7构建一个Web servlet,作为其工作的一部分,它将访问RESTful API。目前,该URL是作为我的servlet中的字符串硬编码的,但我想将其移出,这样一旦servlet完成,我就可以传入servlet应该连接到的URL而不是硬编码。最好的方法是什么?我已经读过我应该在META-INF文件夹中添加一个context.xml文件,但如果我想更改API的URL,这是否意味着我需要重新打包战争?
答案 0 :(得分:0)
使用init-param将servlet的配置扩展到标准web.xml文件:
<servlet>
<servlet-name>My servlet</servlet-name>
<servlet-class>com.foo.bar.MyServlet</servlet-class>
<init-param>
<description>Restful API URL</description>
<param-name>restfulApiUrl</param-name>
<param-value>http://www.foo.com/api/</param-value>
</init-param>
</servlet>
并从您的servlet初始化方法访问它:
private String restulApiUrl;
@Override
public void init(ServletConfig config) throws ServletException {
restulApiUrl = config.getInitParameter("restfulApiUrl");
}
除非你将应用程序部署为爆炸战争,否则这确实会迫使你在更改值时重新打包战争。
您当然可以想象其他解决方案:使用系统属性(在启动Tomcat时传递),将其存储在启动时读取的文件中,将其存储在数据库中等等。