Bonjour,
j'ai crée un Stateless bean, packagé dans un ear, le déploiement au sein de glassfish ne pose pas de soucis et les opérations de persistences fonctionnent à merveille en utilisant l'annotation @PersistenceContext(unitName="CaddyFoxEE-ejbPU") pour injecter les ressources à mon entity manager.
L'étape suivante se corse par contre:
je voudrais remplacer l'annotation par un EntityManagerFactory et récupéré ainsi un entity manager ...
voyez plutot ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <?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="CaddyFoxEE-ejbPU" transaction-type="JTA"> <provider>oracle.toplink.essentials.PersistenceProvider</provider> <jta-data-source>jdbc/CaddyFoxWarehouseDS</jta-data-source> <exclude-unlisted-classes>false</exclude-unlisted-classes> <properties> <property name="toplink.ddl-generation" value="drop-and-create-tables"/> </properties> </persistence-unit> </persistence>
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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 @Stateless public class CaddyfoxUserBean implements CaddyfoxUserRemote, CaddyfoxUserLocal { // @PersistenceContext(unitName="CaddyFoxEE-ejbPU") private EntityManager em; private final String cname = this.getClass().getName(); private Logger logger = Logger.getLogger(Constants.LOGGER_STATELESS); public CaddyfoxUserBean() { EntityManagerFactory emf=null; try{ emf=Persistence.createEntityManagerFactory("CaddyFoxEE-ejbPU"); } catch(Exception e){ System.out.println("---seb---erreur createEntityManagerFactory:"+e.getMessage()); } try{ em=emf.createEntityManager(); } catch(Exception e){ System.out.println("---seb---erreur createEntityManage:"+e.getMessage()); } } public CaddyfoxUser createCaddyfoxUser(final CaddyfoxUser caddyfoxUser) { final String mname = "createCaddyfoxUser"; logger.entering(cname, mname, caddyfoxUser); // On s'assure de la validitÈ des paramËtres if (caddyfoxUser == null) throw new ValidationException("CaddyfoxUser object is null"); try{ em.persist(caddyfoxUser); // em.close(); } catch (Exception e){ System.out.println("---seb----em.persist probleme:"+e.getMessage()); } logger.exiting(cname, mname, caddyfoxUser); return caddyfoxUser; } }
malheureusement, je me ramasse misérablement avec cette erreur:
Si quelqu'un pouvait m'éclairer, ce serait
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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 lundi 27 avril 2009 17 h 11 min 41 s Europe/Brussels [#|2009-04-27T17:11:49.164+0200|INFO|sun-appserver2.1|javax.enterprise.system.tools.admin|_ThreadID=16;_ThreadName=httpWorkerThread-4848-1;/Users/seb/glassfish/domains/CaddyFoxWarehouse/generated/xml/j2ee-apps/CaddyFoxEE/CaddyFoxEEClient.jar;|ADM1040 : Emplacement du jar client :[/Users/seb/glassfish/domains/CaddyFoxWarehouse/generated/xml/j2ee-apps/CaddyFoxEE/CaddyFoxEEClient.jar]|#] [#|2009-04-27T17:11:56.519+0200|INFO|sun-appserver2.1|javax.enterprise.system.stream.out|_ThreadID=41;_ThreadName=p: thread-pool-1; w: 34;| ---seb---erreur createEntityManagerFactory:No Persistence provider for EntityManager named CaddyFoxEE-ejbPU: Provider named oracle.toplink.essentials.PersistenceProvider threw unexpected exception at create EntityManagerFactory: javax.persistence.PersistenceException javax.persistence.PersistenceException: Exception [TOPLINK-28017] (Oracle TopLink Essentials - 2.1 (Build b60e-fcs (12/23/2008))): oracle.toplink.essentials.exceptions.EntityManagerSetupException Exception Description: Attempted to predeploy PersistenceUnit [CaddyFoxEE-ejbPU] while being in the wrong state [DeployFailed]. at oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerSetupImpl.predeploy(EntityManagerSetupImpl.java:537) at oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider.createEntityManagerFactory(EntityManagerFactoryProvider.java:195) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:110) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:83) at com.caddyfox.stateless.caddyfoxuser.CaddyfoxUserBean.<init>(CaddyfoxUserBean.java:37) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:494) at java.lang.Class.newInstance0(Class.java:350) at java.lang.Class.newInstance(Class.java:303) at com.sun.ejb.containers.StatelessSessionContainer.createStatelessEJB(StatelessSessionContainer.java:509) at com.sun.ejb.containers.StatelessSessionContainer.access$100(StatelessSessionContainer.java:111) at com.sun.ejb.containers.StatelessSessionContainer$SessionContextFactory.create(StatelessSessionContainer.java:772) at com.sun.ejb.containers.util.pool.NonBlockingPool.getObject(NonBlockingPool.java:199) at com.sun.ejb.containers.StatelessSessionContainer._getContext(StatelessSessionContainer.java:486) at com.sun.ejb.containers.BaseContainer.getContext(BaseContainer.java:1700) at com.sun.ejb.containers.BaseContainer.preInvoke(BaseContainer.java:1229) at com.sun.ejb.containers.EJBObjectInvocationHandler.invoke(EJBObjectInvocationHandler.java:202) at com.sun.ejb.containers.EJBObjectInvocationHandlerDelegate.invoke(EJBObjectInvocationHandlerDelegate.java:77) at $Proxy283.createCaddyfoxUser(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie._invoke(ReflectiveTie.java:154) at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatchToServant(CorbaServerRequestDispatcherImpl.java:687) at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(CorbaServerRequestDispatcherImpl.java:227) at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequestRequest(CorbaMessageMediatorImpl.java:1846) at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:1706) at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleInput(CorbaMessageMediatorImpl.java:1088) at com.sun.corba.ee.impl.protocol.giopmsgheaders.RequestMessage_1_2.callback(RequestMessage_1_2.java:223) at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:806) at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.dispatch(CorbaMessageMediatorImpl.java:563) at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.doWork(CorbaMessageMediatorImpl.java:2567) at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:555) Caused by: Exception [TOPLINK-28017] (Oracle TopLink Essentials - 2.1 (Build b60e-fcs (12/23/2008))): oracle.toplink.essentials.exceptions.EntityManagerSetupException Exception Description: Attempted to predeploy PersistenceUnit [CaddyFoxEE-ejbPU] while being in the wrong state [DeployFailed]. at oracle.toplink.essentials.exceptions.EntityManagerSetupException.cannotPredeploy(EntityManagerSetupException.java:220) ... 36 more The following providers: oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider Returned null to createEntityManagerFactory. |#] [#|2009-04-27T17:11:56.519+0200|INFO|sun-appserver2.1|javax.enterprise.system.stream.out|_ThreadID=41;_ThreadName=p: thread-pool-1; w: 34;| ---seb---erreur createEntityManage:null|#] [#|2009-04-27T17:11:56.519+0200|INFO|sun-appserver2.1|javax.enterprise.system.stream.out|_ThreadID=41;_ThreadName=p: thread-pool-1; w: 34;| ---seb----em.persist probleme:null|#]
Les logs sont générés à l'appel de la méthode distante "createCaddyfoxUser".
D'après les logs, il y a un soucis de persistence provider... puis un autre probleme, "predeploy PersistenceUnit [CaddyFoxEE-ejbPU] while being in the wrong state" ...








Répondre avec citation
Partager