存储EJB配置的推荐方法是什么? (app.config / web.config的Java版本)

时间:2013-09-11 15:39:55

标签: java configuration ejb web.xml

我必须为询问之前可能被问过的次数而道歉,但经过广泛搜索后,我仍然不确定。

web.xml可以存储JSP页面和servlet的配置参数。可以在同一个项目中用于bean吗?否则豆类有什么类似的东西吗?

我想要存储的项目是特定于部署的字符串:DB驱动程序类,连接字符串和一组资源路径。

我遇到的一个选项是java.util.Properties,但它需要一些编码。

修改

为了实现下面提出的解决方案,我已经将ejb-jar.xml添加到bean项目中,并使用以下内容填充它:

<enterprise-beans>
    <session>
        <ejb-name>ejbConfigurator</ejb-name>
        <env-entry>
            <description>Path to the directory containing images</description>
            <!--env-entry-name>package.ejbConfigurator/imageBasePath</env-entry-name-->
            <env-entry-name>imageBasePath</env-entry-name>
            <env-entry-type>java.lang.String</env-entry-type>
            <env-entry-value>/home/user/NetBeansProjects/Builder/images</env-entry-value>
        </env-entry>
    </session>
</enterprise-beans>

注释变量没有填充:

@Resource(name="imageBasePath")
private String imageBasePath;

@Resource private String imageBasePath;

以下代码

try {
    Context ctx = new InitialContext();
    this.imageBasePath = (String) ctx.lookup("java:comp/env/imageBasePath");
}
catch (NamingException ex) {
    Logger.getLogger(ejbBlanketConfigurator.class.getName()).log(Level.SEVERE, null, ex);
}

抛出异常:

javax.naming.NameNotFoundException: No object bound to name java:comp/env/imageBasePath

2 个答案:

答案 0 :(得分:0)

有几种方法,根据您的部署结构,选择一种或另一种方式可能是有意义的。

  • META-INF/ejb-jar.xml - 当EJB位于自己的JAR中时使用,而JAR又是EAR的一部分。
  • WEB-INF/ejb-jar.xml - 当EJB是WAR的一部分时使用。
  • 注释 - 可以通过bean类本身的注释指定许多配置选项。

以上是EJB特有的配置。但是,您提及的某些资源可能会在ejb-jar.xmlweb.xml中指定。

作为参考,请尝试阅读schema file - 它有相当详细的文档或this之类的内容。

答案 1 :(得分:0)

签出ejb-jar.xml,特别是env-entry元素,这样可以将已配置的项目注入代码

<env-entry>
  <env-entry-name>some_name</env-entry-name>
  <env-entry-type>java.lang.String</env-entry-type>
  <env-entry-value>Some configurable value</env-entry-value>
</env-entry>

并将其与注释一起使用:

@Resource(name="some_name")
String someString;

请参阅http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/env_entry/env_entry.html

正如另一个发布的那样,ejb-jar.xml的位置取决于EJB jar的位置。

无论其

具体来说,对于DB驱动程序类和连接字符串,您可能需要查看外部配置数据源,然后从应用程序访问外部配置的数据源(通常通过JNDI或JNDI + resource-ref)。