Jakarta ee 部署在WAR文件中时,ejb-jar.xml中的env条目未注入@Resource
我有一个maven web应用程序,它依赖于EJB项目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> <
<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>