J'ai une application web maven qui dépend d'un projet EJB.L'entrée env dans ejb-jar.xml n'est pas injectée avec @Resource lors du déploiement dans le fichier WAR
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>soar-ejb</artifactId>
<version>1.0</version>
<type>jar</type>
</dependency>
Dans le projet EJB là, je l'ai ajouté un env-entry
dans le ejb-jar.xml
comme tel:
<?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>
Je l'ai testé le projet EJB, en utilisant Arquillian, et je suis en mesure d'injecter cette valeur en utilisant @Resource
en tant que tel: @Resource (name = "configFileLocation") private String configFile; Maintenant, quand je construis le .war avec la dépendance ejb, je reçois un .war avec mon projet EJB en tant que .jar à l'intérieur WEB-INF\lib
. Dans ce projet EJB (c'est-à-dire à l'intérieur du fichier .jar), le fichier ejb-jar.xml
se trouve dans le répertoire approprié META-INF
. MAIS maintenant, quand je déploie sur le serveur l'injection @Resource
ne fonctionne jamais. Le String
est toujours null
. D'après ce que j'ai lu, j'ai le ejb-jar.xml
dans l'emplacement correct, à la fois dans le projet EJB et dans le .war que maven produit.
Est-ce que quelqu'un aurait une idée de ce que j'ai mal configuré?
Merci!
EDIT:
modifié l'élément de session
<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, j'ai ajouté l'élément ejb-name à l'élément de session et la ressource n'est toujours pas injectée. Fonctionne toujours lorsque je teste le projet ejb par lui-même. – flchannel