Jakarta ee 部署在WAR文件中时,ejb-jar.xml中的env条目未注入@Resource

Jakarta ee 部署在WAR文件中时,ejb-jar.xml中的env条目未注入@Resource,jakarta-ee,maven-2,glassfish-3,ejb-3.1,ejb-jar.xml,Jakarta Ee,Maven 2,Glassfish 3,Ejb 3.1,Ejb Jar.xml,我有一个maven web应用程序,它依赖于EJB项目 <dependency> <groupId>${project.groupId}</groupId> <artifactId>soar-ejb</artifactId> <version>1.0</version> <type>jar</type> <

我有一个maven web应用程序,它依赖于EJB项目

   <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>soar-ejb</artifactId>
        <version>1.0</version>
        <type>jar</type>
    </dependency>
我已经使用arquillian测试了EJB项目,并且能够使用
@Resource
像这样的: @资源(name=“configFileLocation”) 私有字符串配置文件

现在,当我使用ejb依赖项构建.war时,我的ejb项目将在
WEB-INF\lib
中以.jar的形式得到一个.war。在这个EJB项目中(即在.jar中),
EJB-jar.xml
文件位于适当的
META-INF
目录中

但是现在,当我部署到服务器时,
@Resource
注入永远不起作用。
字符串
始终为
null
。根据我读到的内容,我将
ejb jar.xml
放在正确的位置,既在ejb项目中,也在maven生成的.war中

有人知道我配置的不正确吗

谢谢

编辑:

将会话元素修改为

<session>
        <description>An EJB that loads configuration from a file</description>
        <display-name>ConfigurationProducer</display-name>
        <ejb-name>ConfigurationProducer</ejb-name>
        <ejb-class>com.trf.util.DropboxConfigFileProducer</ejb-class>
        <session-type>Stateless</session-type>
        <env-entry>
            <description>Location of the config file</description>
            <env-entry-name>configFileLocation</env-entry-name>
            <env-entry-type>java.lang.String</env-entry-type>
            <env-entry-value>dropbox-config.properties</env-entry-value>
        </env-entry>
    </session>

从文件加载配置的EJB
配置生成器
配置生成器
com.trf.util.DropboxConfigFileProducer
无国籍
配置文件的位置
配置文件位置
java.lang.String
dropbox-config.properties

ejb-jar.xml的session元素不包含ejb-name属性,请尝试使用与bean接口名称匹配的名称放置一个属性。我编辑了您的答案以向您展示一个示例。

您的ejb-jar.xml的session元素不包含ejb-name属性,请尝试使用与bean接口名称匹配的名称放置一个属性。我编辑了您的答案以向您展示一个示例。

我通过修改
pom.xml
ejb
项目的依赖关系,将
提供给
,然后将
war
ejb
项目包装到
ear
项目中,解决了这个问题pom.xml
现在如下所示:

    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>soar-ejb</artifactId>
        <version>1.0</version>
        <scope>provided</scope>
    </dependency>

@Resource
注入现在正在处理
ejb
ejb jar.xml
中的
env条目
,当我从
ear
项目部署到服务器时

我通过将
pom.xml
中的
ejb
项目的依赖项修改为
提供
,然后将
war
ejb
项目包装到
ear
项目中,解决了这个问题pom.xml
现在如下所示:

    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>soar-ejb</artifactId>
        <version>1.0</version>
        <scope>provided</scope>
    </dependency>

@Resource
注入现在正在处理
ejb
ejb jar.xml
中的
env条目
,当我从
ear
项目部署到服务器时

Remigo,我已经将ejb名称元素添加到会话元素中,但资源仍然没有被注入。当我单独测试ejb项目时仍然有效。Remigo,我已经将ejb名称元素添加到会话元素中,资源仍然没有被注入。当我单独测试ejb项目时仍然有效。
 <dependencies>
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>soar-ejb</artifactId>
        <version>1.0</version>
        <type>ejb</type>
    </dependency>
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>soar-war</artifactId>
        <version>1.0</version>
        <type>war</type>
    </dependency>
</dependencies>