J'ai des problèmes pour que JBoss injecte une valeur de variable d'environnement dans un bean. Voici ma classe de bean:question sur EJB et injection de ressources
package com.topcoder.test; import java.util.ArrayList; import java.util.List; import javax.annotation.Resource; import javax.ejb.EJBContext; import javax.ejb.Remote; import javax.ejb.SessionContext; import javax.ejb.Stateless; import javax.ejb.TransactionManagement; import javax.ejb.TransactionManagementType; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.persistence.PersistenceContextType; import org.jboss.annotation.ejb.RemoteBinding; import com.topcoder.test.Test; public @Stateless(name = "TestBean") class TestBean implements Test { @Resource(name="managerFile") private String managerFile; public String getManagerFile() { return managerFile; } public String testMethod() { String ret = "the value of managerFile in testMethod() is " + getManagerFile(); return ret; } @PersistenceContext(unitName = "persistenceUnit", type = PersistenceContextType.TRANSACTION) private EntityManager manager; @PersistenceContext(unitName = "persistenceUnit", type = PersistenceContextType.TRANSACTION) public void setEntityManager(EntityManager manager) { this.manager = manager; } public EntityManager getEntityManager() { if (manager == null) { throw new IllegalStateException("EntityManager has not been set on DAO before usage"); } return manager; } @SuppressWarnings("unchecked") public List retrieveAll() throws Exception { EntityManager em = getEntityManager(); List result = em.createQuery("FROM TestEntity").getResultList(); if (result == null) { result = new ArrayList(); } return result; } }
Je veux que la valeur managerFile soit injectée par JBoss. Voici mon ejb-jar.xml:
<enterprise-beans>
<session>
<ejb-name>Test</ejb-name>
<ejb-class>com.topcoder.test.TestBean</ejb-class>
<env-entry>
<env-entry-name>managerFile</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>com/topcoder/test/TestBean.properties</env-entry-value>
</env-entry>
</session>
</enterprise-beans>
Mais je reçois ce message d'erreur lorsque je déploie mon oreille à JBoss:
09: 07: 40495 WARN [ResourceHandler] Non injection managerFile, pas enc correspondant injecteur env/managerFile trouvé
Je cours JBoss 4.2. Qu'est-ce que je fais mal?
Merci pour votre réponse. J'ai changé le Test en TestBean sur l'annotation @Stateless, mais j'ai toujours la même erreur: [ResourceHandler] Pas d'injection de gestionnaireFichier, aucun injecteur enc correspondant env/gestionnaireFichier trouvé D'autres idées? – dcp
Etes-vous sûr que le fichier ejb-jar.xml se trouve dans le répertoire META-INF/JAR de votre JAR? Si je n'ai pas inclus le , j'obtiens la même erreur, donc votre problème peut être un problème de déploiement. –
mtpettyp
J'ai un répertoire de l'oreille que j'ai déployé sur JBoss, et sous ce dossier auriculaire j'ai un dossier META-INF. Le fichier ejb-jar.xml se trouve dans le dossier META-INF. – dcp