我想用@resource
注入一个文件目录字符串,这个字符串的声明在application.xml
文件中,这是我的代码
<application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:application="http://java.sun.com/xml/ns/javaee/application_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_6.xsd"
id="Application_ID" version="6">
<display-name>Project_APP</display-name>
<module>
<ejb>Project_Dalayer.jar</ejb>
</module>
<module>
<web>
<web-uri>Project_UI.war</web-uri>
<context-root>Project_UI</context-root>
</web>
</module>
<env-entry>
<env-entry-name>java:app/env/logDirName</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>/app/Project_Data/logs/</env-entry-value>
</env-entry>
dal图层中的类
@Startup
@Singleton
public class LoggingManager{
@Resource(name = "java:app/env/logDirName")
private String logDirName;
}
此字符串logDirName
返回null
。
答案 0 :(得分:1)
EJB 3.1(最终)标准化了全局JNDI条目,您的EJB代码看起来很好,我认为失败的是您的application.xml上的配置。您的 env 条目应如下所示:
<env-entry>
<env-entry-name>logDirName</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>/app/Project_Data/logs/</env-entry-value>
</env-entry>
即。容器将在java:app / env /下为您设置条目。
干杯