在创建/部署war文件时,我在web.xml中使用a来定义要使用的属性文件:
<?xml version="1.0" encoding="UTF-8"?>
<web-app 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"
version="3.0">
<context-param>
<param-name>PropertiesFile</param-name>
<param-value>/path/to/my.properties</param-value>
</context-param>
<display-name>MyServlet</display-name>
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.my.company.MyServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
并在我的servlet的init方法中使用它,这样我就不必在代码中对文件名进行硬编码:
public void init(ServletConfig config) throws ServletException
{
super.init(config);
log.debug("Enter init()");
// get the properties location from web.xml
String propertiesFile = config.getServletContext()
.getInitParameter("PropertiesFile");
log.info("Using properties file: " + propertiesFile);
// Finish intiliazing...
}
是否有类似(或完全不同)的东西设置/获取包含EJB jar的ear的属性文件而不在我的类中对其进行硬编码?属性文件不会包含在jar或ear中,而是位于应用服务器外部的服务器上。
答案 0 :(得分:1)
您可以使用环境条目并使用@Resource
注入它们以达到您想要的效果。
看看这个OpenEJB example。
但是,如果你这样说:
属性文件不会包含在jar或ear中,但是 位于应用服务器外部的服务器上。
对于企业应用程序来说听起来不太好。您不应该依赖容器外的资源,也不应该对您(或容器)无法控制的资源做出任何假设 也不鼓励对文件进行操作(如果不是禁止的话 - 不记得确切。)