У меня есть веб-приложение maven, которое имеет зависимость от проекта EJB.env-entry в ejb-jar.xml не вставляется с @Resource при развертывании внутри WAR-файла
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>soar-ejb</artifactId>
<version>1.0</version>
<type>jar</type>
</dependency>
В EJB проекта там я добавил env-entry
в ejb-jar.xml
как таковой:
<?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;
Теперь, когда я создаю .war с зависимостью ejb, я получаю .war с моим проектом EJB как .jar внутри WEB-INF\lib
. В рамках этого проекта EJB (т. Е. Внутри .jar) файл ejb-jar.xml
находится в соответствующем каталоге META-INF
.
НО, но теперь, когда я развертываю на сервере, вставка @Resource
никогда не работает. String
всегда null
. Согласно тому, что я прочитал, у меня есть ejb-jar.xml
в правильном месте, как в проекте EJB, так и в .war, который производит maven.
У кого-нибудь есть представление о том, что я настроил неправильно?
Спасибо!
EDIT:
Модифицированный сессии элемент
<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