我必须为询问之前可能被问过的次数而道歉,但经过广泛搜索后,我仍然不确定。
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
答案 0 :(得分:0)
有几种方法,根据您的部署结构,选择一种或另一种方式可能是有意义的。
META-INF/ejb-jar.xml
- 当EJB位于自己的JAR中时使用,而JAR又是EAR的一部分。WEB-INF/ejb-jar.xml
- 当EJB是WAR的一部分时使用。以上是EJB特有的配置。但是,您提及的某些资源可能会在ejb-jar.xml
和web.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)。