资源注入字符串变量返回null

时间:2014-01-02 09:04:15

标签: java ejb-3.1

我想用@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

1 个答案:

答案 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 /下为您设置条目。

干杯