Précédent   Forum des professionnels en informatique > Java > Serveurs, conteneurs, et Java EE > GlassFish
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/12/2011, 23h07   #1
Membre habitué
 
Avatar de if_zen
 
Homme Olivier
Développeur Java
Inscription : juin 2004
Messages : 252
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 30
Localisation : France, Puy de Dôme (Auvergne)

Informations professionnelles :
Activité : Développeur Java
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2004
Messages : 252
Points : 148
Points : 148
Envoyer un message via MSN à if_zen
Par défaut Packaging d'un EAR

Bonjour,

J'essaye de créer un projet "EAR" contenant les projets suivants :
- Une application cliente, démarrable en java web start, et qui ne contiendrait que les interfaces des EJB ainsi que les classes Entités.
- Une application "commons" qui regroupe des classes utilisées à la fois par la partie cliente et par la partie serveur
- Une application "EJB" qui contient les EJB et leurs interfaces Remote (EJB 3.1)
- Une application "JPA" qui contient tous les Entity Beans.

Mon problème est de faire communiquer tout cet ensemble en rendant visible par l'application cliente les ejb et les entités.

En ne faisant que le minimum sous Eclipse on a dans notre EAR le projet EJB ; et le projet Client à la racine de l'EJB, puis les projets Common ; JPA dans un sous-dossier lib.
En lançant le module Client les classes Entités ne sont pas trouvées.

Après bidouillages pour définir l'architecture telle qu'elle me semblerait correcte, j'en arrive à la structure suivante (les noms des projets ont été simplifiés) :
Code :
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
 
- lib
----Commons.jar
- META-INF
----Manifest.mf (pas de classpath)
- Client.jar
---- <packages>/classes
---- META-INF
-------- Manifest.mf (classpath: EJB.jar JPA.jar + Main-Class)
-------- application-client.xml
----  JPA.jar
-------- <packages>/classes
-------- META-INF
------------ Manifest.mf (pas de classpath)
------------ persistence.xml
---- EJB.jar
-------- <packages>/classes
-------- META-INF
------------ Manifest.mf (class-path: JPA.jar)
-------- JPA.jar
------------ <packages>/classes
------------ META-INF
---------------- Manifest.mf (pas de classpath)
---------------- persistence.xml
- EJB.jar
---- <packages>/classes
---- META-INF
-------- Manifest.mf (class-path: JPA.jar)
---- JPA.jar
-------- <packages>
-------- META-INF
------------ Manifest.mf (pas de classpath)
------------ persistence.xml
- JPA.jar
---- <packages>/classes
---- META-INF
-------- Manifest.mf (pas de classpath)
-------- persistence.xml
Je ne suis pas sûr que cette structure soit correcte ; et d'ailleurs j'ai des problèmes pour déployer. En effet, le persistence Unit est configuré dans le projet JPA ; et les EJB ne trouvent pas la déinition de cette persistenceUnit.

Message d'erreur :
Code :
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
 
Infos: Interceptor called for ...TimeWorker
 
Grave: Exception while invoking class org.glassfish.persistence.jpa.JPADeployer prepare method
Grave: java.lang.RuntimeException: Impossible de résoudre une unité de persistance correspondant à persistence-context-ref-name [TimeWorkerJPA] dans l’étendue du module [TimeWorker#TimeWorkerEJB.jar]. Vérifiez votre application.
	at com.sun.enterprise.deployment.BundleDescriptor.findReferencedPUViaEMRef(BundleDescriptor.java:694)
	at com.sun.enterprise.deployment.BundleDescriptor.findReferencedPUsViaPCRefs(BundleDescriptor.java:682)
	at com.sun.enterprise.deployment.EjbBundleDescriptor.findReferencedPUs(EjbBundleDescriptor.java:901)
	at org.glassfish.persistence.jpa.JPADeployer.createEMFs(JPADeployer.java:185)
	at org.glassfish.persistence.jpa.JPADeployer.prepare(JPADeployer.java:167)
	at com.sun.enterprise.v3.server.ApplicationLifecycle.prepareModule(ApplicationLifecycle.java:872)
	at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:410)
	at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)
	at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:388)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:355)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:370)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1069)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:98)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1249)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1237)
	at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:473)
	at com.sun.enterprise.v3.admin.AdminAdapter.onMissingResource(AdminAdapter.java:226)
	at org.glassfish.grizzly.http.server.StaticHttpHandler.service(StaticHttpHandler.java:189)
	at com.sun.enterprise.v3.server.HK2Dispatcher.dispatch(HK2Dispatcher.java:113)
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:236)
	at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:162)
	at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:160)
	at org.glassfish.grizzly.filterchain.ExecutorResolver$3.execute(ExecutorResolver.java:95)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:444)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:364)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:290)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:133)
	at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:76)
	at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:63)
	at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:823)
	at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:116)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$000(WorkerThreadIOStrategy.java:55)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$1.run(WorkerThreadIOStrategy.java:98)
	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:508)
	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:488)
	at java.lang.Thread.run(Thread.java:722)
 
Grave: 	at com.sun.enterprise.deployment.BundleDescriptor.findReferencedPUViaEMRef(BundleDescriptor.java:694)
Grave: 	at com.sun.enterprise.deployment.BundleDescriptor.findReferencedPUsViaPCRefs(BundleDescriptor.java:682)
Grave: 	at com.sun.enterprise.deployment.EjbBundleDescriptor.findReferencedPUs(EjbBundleDescriptor.java:901)
Grave: 	at org.glassfish.persistence.jpa.JPADeployer.createEMFs(JPADeployer.java:185)
Grave: 	at org.glassfish.persistence.jpa.JPADeployer.prepare(JPADeployer.java:167)
Grave: 	at com.sun.enterprise.v3.server.ApplicationLifecycle.prepareModule(ApplicationLifecycle.java:872)
Grave: 	at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:410)
Grave: 	at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)
Grave: 	at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:388)
Grave: 	at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:355)
Grave: 	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:370)
Grave: 	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1069)
Grave: 	at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:98)
Grave: 	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1249)
Grave: 	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1237)
Grave: 	at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:473)
Grave: 	at com.sun.enterprise.v3.admin.AdminAdapter.onMissingResource(AdminAdapter.java:226)
Grave: 	at org.glassfish.grizzly.http.server.StaticHttpHandler.service(StaticHttpHandler.java:189)
Grave: 	at com.sun.enterprise.v3.server.HK2Dispatcher.dispatch(HK2Dispatcher.java:113)
Grave: 	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:236)
Grave: 	at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:162)
Grave: 	at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:160)
Grave: 	at org.glassfish.grizzly.filterchain.ExecutorResolver$3.execute(ExecutorResolver.java:95)
Grave: 	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:444)
Grave: 	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:364)
Grave: 	at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:290)
Grave: 	at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:133)
Grave: 	at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:76)
Grave: 	at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:63)
Grave: 	at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:823)
Grave: 	at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113)
Grave: 	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:116)
Grave: 	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$000(WorkerThreadIOStrategy.java:55)
Grave: 	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$1.run(WorkerThreadIOStrategy.java:98)
Grave: 	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:508)
Grave: 	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:488)
Grave: 	at java.lang.Thread.run(Thread.java:722)
Grave: Exception while preparing the app
Grave: Impossible de résoudre une unité de persistance correspondant à persistence-context-ref-name [TimeWorkerJPA] dans l’étendue du module [TimeWorker#TimeWorkerEJB.jar]. Vérifiez votre application.
java.lang.RuntimeException: Impossible de résoudre une unité de persistance correspondant à persistence-context-ref-name [TimeWorkerJPA] dans l’étendue du module [TimeWorker#TimeWorkerEJB.jar]. Vérifiez votre application.
	at com.sun.enterprise.deployment.BundleDescriptor.findReferencedPUViaEMRef(BundleDescriptor.java:694)
	at com.sun.enterprise.deployment.BundleDescriptor.findReferencedPUsViaPCRefs(BundleDescriptor.java:682)
	at com.sun.enterprise.deployment.EjbBundleDescriptor.findReferencedPUs(EjbBundleDescriptor.java:901)
	at org.glassfish.persistence.jpa.JPADeployer.createEMFs(JPADeployer.java:185)
	at org.glassfish.persistence.jpa.JPADeployer.prepare(JPADeployer.java:167)
	at com.sun.enterprise.v3.server.ApplicationLifecycle.prepareModule(ApplicationLifecycle.java:872)
	at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:410)
	at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)
	at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:388)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:355)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:370)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1069)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:98)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1249)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1237)
	at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:473)
	at com.sun.enterprise.v3.admin.AdminAdapter.onMissingResource(AdminAdapter.java:226)
	at org.glassfish.grizzly.http.server.StaticHttpHandler.service(StaticHttpHandler.java:189)
	at com.sun.enterprise.v3.server.HK2Dispatcher.dispatch(HK2Dispatcher.java:113)
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:236)
	at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:162)
	at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:160)
	at org.glassfish.grizzly.filterchain.ExecutorResolver$3.execute(ExecutorResolver.java:95)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:444)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:364)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:290)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:133)
	at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:76)
	at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:63)
	at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:823)
	at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:116)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$000(WorkerThreadIOStrategy.java:55)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$1.run(WorkerThreadIOStrategy.java:98)
	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:508)
	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:488)
	at java.lang.Thread.run(Thread.java:722)
 
Grave: Exception while preparing the app : Impossible de résoudre une unité de persistance correspondant à persistence-context-ref-name [TimeWorkerJPA] dans l’étendue du module [TimeWorker#TimeWorkerEJB.jar]. Vérifiez votre application.

Du coup j'ai un doute, est-ce que le projet Client (Java Web Start) doit contenir un double des projets EJB / JPA au sein de son jar, ou doit il trouver les JAR dans le projet EAR ? Je n'ai pas trouvé comment demander à Eclipse de ne mettre que les interfaces des EJB dans le déploiement côté client.

Merci pour votre aide ... :-)
if_zen est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h03.


 
 
 
 
Partenaires

Hébergement Web