我有一個Maven Web應用程序,它依賴於EJB項目。ejb-jar.xml中的env-entry在部署在WAR文件中時未注入@Resource
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>soar-ejb</artifactId>
<version>1.0</version>
<type>jar</type>
</dependency>
在EJB項目中有我在ejb-jar.xml
加入env-entry
這樣:
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar xmlns = "http://java.sun.com/xml/ns/javaee"
version = "3.1"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd">
<enterprise-beans>
<session>
<env-entry>
<description>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>
</enterprise-beans>
</ejb-jar>
我測試過的EJB項目,使用的Arquillian,我能夠注入該值使用@Resource
原樣: @Resource(name =「configFileLocation」) private String configFile;
現在,當我構建帶有ejb依賴項的.war時,我的EJB項目獲得了一個.war作爲.jar文件,內部爲WEB-INF\lib
。在這個EJB項目中(即在.jar中),ejb-jar.xml
文件位於正確的META-INF
目錄中。
但是現在,當我部署到服務器@Resource
注入從來沒有工作。 String
總是null
。根據我讀過的內容,我在012項目中的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>
Remigo,我已將ejb-name元素添加到會話元素,並且資源仍未注入。當我自己測試ejb項目時仍然有效。 – flchannel