在EJB Jar中动态获取属性文件名(部署在耳中)

时间:2011-11-22 21:40:34

标签: java-ee parameters ear ejb-3.1

在创建/部署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中,而是位于应用服务器外部的服务器上。

1 个答案:

答案 0 :(得分:1)

您可以使用环境条目并使用@Resource注入它们以达到您想要的效果。

看看这个OpenEJB example

但是,如果你这样说:

  

属性文件不会包含在jar或ear中,但是   位于应用服务器外部的服务器上。

对于企业应用程序来说听起来不太好。您不应该依赖容器外的资源,也不应该对您(或容器)无法控制的资源做出任何假设 也不鼓励对文件进行操作(如果不是禁止的话 - 不记得确切。)