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 :
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...
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
@PersistenceContext(type = PersistenceContextType.TRANSACTION, unitName = ProjetPerstistenceContext.UNIT_NAME)
    private EntityManager           em;
Avec ProjetPersitenceContext une interface contenant un objet static de type String nommé UNIT_NAME et ayant pour valeur "projet-business-jpa".

Mon fichier persistence.xml se trouvant dans le module JPA est sensiblement le suivant :
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>
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
[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.
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 ?

Merci d'avance.