Bonjour,
Je rencontre un problème qui monopolise mon temps plus que de raison, j'essaie d'accéder à une base DB2 au travers d'une application web utilisant les EJB3 et JPA et à ma grande surprise le module EJB n'accède pas correctement à la partie JPA et m'insulte de la manière suivante :
La déclaration de em mon EntityManager est fait comme suit, dans l'ejb MonObjetEjb :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 javax.ejb.EJBException: The MonObjetEjb/em reference of type javax.persistence.EntityManager for the MonObjetEjb component in the projet-ejb.jar module of the appli-EAR application cannot be resolved. com.ibm.wsspi.injectionengine.InjectionBinding.getInjectionObject(InjectionBinding.java:681) com.ibm.wsspi.injectionengine.InjectionTargetField.inject(InjectionTargetField.java:245) com.ibm.ws.injectionengine.InjectionEngineImpl.inject(InjectionEngineImpl.java:620) com.ibm.ejs.container.StatelessBeanO.initialize(StatelessBeanO.java:316) com.ibm.ejs.container.CMStatelessBeanOFactory.create(CMStatelessBeanOFactory.java:45) com.ibm.ejs.container.EJSHome.createBeanO(EJSHome.java:1030) com.ibm.ejs.container.EJSHome.createBeanO(EJSHome.java:1140) com.ibm.ejs.container.activator.UncachedActivationStrategy.atActivate(UncachedActivationStrategy.java:84) com.ibm.ejs.container.activator.Activator.activateBean(Activator.java:599) com.ibm.ejs.container.EJSContainer.preInvokeActivate(EJSContainer.java:3964) com.ibm.ejs.container.EJSContainer.EjbPreInvoke(EJSContainer.java:3349) est à l'origine ma méthode appelant l'EJB...
Avec ProjetPersitenceContext une interface contenant un objet static de type String nommé UNIT_NAME et ayant pour valeur "projet-business-jpa".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 @PersistenceContext(type = PersistenceContextType.TRANSACTION, unitName = ProjetPerstistenceContext.UNIT_NAME) private EntityManager em;
Mon fichier persistence.xml se trouvant dans le module JPA est sensiblement le suivant :
Ma data source jdbc/projet-connection est définie et configurée sur mon serveur websphère, testée sous la console d'administration websphère elle répond correctement. Je suis même allé jusqu'à tester l'accès à la base en utilisant directement le module JPA qui fonctionne, le problème vient visiblement du fait qu'a l'exécution le module EJB n'a pas connaissance de la partie JPA. Un dernier élément à l'exécution, lors de l'appel d'un EJB, la console websphère indique :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <?xml version="1.0" encoding="UTF-8"?> <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"> <persistence-unit name="projet-business-jpa"> <jta-data-source>jdbc/projet-connection</jta-data-source> <class>class1</class> [...] <class>classn</class> </persistence-unit> </persistence>
Je désespère de trouver une solution à mon problème et visiblement google n'est pas mon ami sur ce coup. Une âme charitable aurait-elle un élément de piste ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 [16/03/10 14:18:04:046 CET] 00000047 JPAApplInfo E CWWJP0029E: CWWJP0029E: Le serveur ne parvient pas à trouver l'unité de persistance projet-business-jpa dans le module module-ejb.jar et l'application appli-EAR. [16/03/10 14:18:04:046 CET] 00000047 InjectionBind E CWNEN0035E: Impossible de résoudre la référence MonObjetEjb/em de type javax.persistence.EntityManager pour le composant MonObjetEjb dans le module module-ejb.jar de l'application appli-EAR. [16/03/10 14:18:04:312 CET] 00000047 FfdcProvider I com.ibm.ws.ffdc.impl.FfdcProvider logIncident FFDC1003I: Incident FFDC émis sur server1_4c7b4c7b_10.03.16_14.18.04.0463847371690004128951.txt com.ibm.ejs.container.StatelessBeanO.<init> 282 [16/03/10 14:18:04:562 CET] 00000047 FfdcProvider I com.ibm.ws.ffdc.impl.FfdcProvider logIncident FFDC1003I: Incident FFDC émis sur server1_4c7b4c7b_10.03.16_14.18.04.3284655491951234321447.txt com.ibm.ejs.container.EJSHome.createBeanO 1023 [16/03/10 14:18:04:562 CET] 00000047 BusinessExcep E CNTR0019E: L'EJB a émis une exception inattendue (non déclarée) lors de l'appel de la méthode "ma méthode applant l'EJB". Données de l'exception :javax.ejb.EJBException: The MonObjetEjb/em reference of type javax.persistence.EntityManager for the MonObjetEjb component in the module-ejb.jar module of the appli-EAR application cannot be resolved.
Merci d'avance.
Partager