0

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

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

我要存储的项目将是特定于部署的字符串:数据库驱动程序类、连接字符串和一堆资源路径。

我遇到的选项之一是 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
4

2 回答 2

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 + 资源引用)。

于 2013-09-11T17:37:27.827 回答
0

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

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

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

作为参考,请尝试阅读架构文件- 它的文档相当完善,或者类似东西。

于 2013-09-11T17:29:45.730 回答