bonjour,
mon problème est le suivant: j'ai un projet EJB qui contient 3 beans, et une classe client qui est en fait un formulaire SWT.
j'ai aussi une projet EAR.
les beans accèdent à des données JPA, situées dans un projet JPA.
au départ, j'avais ajouté le projet entities (JPA) dans le java build path/projets, mais j'ai lu qqpart qu'il fallait l'ajouter en tant que JAR, ce que j'ai fait.
-dans l'EAR, dans JavaEE Module dependencies, j'ai le projet EJB.
- dans l'EJB, dans le java build path/libraries, j'ai le JAR du projet entities.
voici l'erreur que j'obtiens lors du lancement du serveur (glassfish V2):
et voici ce que je trouve dans server.log:Buildfile: /Users/oliviersaint-eve/Documents/plan_de_travail_eclipse/.metadata/.plugins/org.eclipse.jst.server.generic.core/serverdef/sunappsrv-ant.xml
deploy.j2ee.ear:
[jar] Building jar: /Users/oliviersaint-eve/Documents/plan_de_travail_eclipse/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/YAPS_cellophane_EAR.ear
tools:
deploy:
[exec] CLI171 Échec de la commande deploy : Déploiement de l'application dans le domaine a échoué ; Erreur lors du chargement des descripteurs du déploiement pour le module [YAPS_cellophane_EAR] -- Fichier jar EJB [YAPS_cellophane_ejb.jar] non valide : Il ne contient aucun EJB.
[exec] Remarque :
[exec] 1. Un fichier JAR EJB valide requiert au moins une session, une entité (style 1.x/2.x) ou un bean géré par message.
[exec] 2. Les beans entité EJB3+ (@Entity) sont des POJO. Insérez-les sous forme de JAR de bibliothèque.
[exec] 3. Si le fichier JAR contient des EJB valides annotés avec des annotations de niveau composant EJB (@Stateless, @Stateful, @MessageDriven), consultez server.log pour savoir si le traitement des annotations s'est bien déroulé.
BUILD FAILED
/Users/oliviersaint-eve/Documents/plan_de_travail_eclipse/.metadata/.plugins/org.eclipse.jst.server.generic.core/serverdef/sunappsrv-ant.xml:225: The following error occurred while executing this line:
/Users/oliviersaint-eve/Documents/plan_de_travail_eclipse/.metadata/.plugins/org.eclipse.jst.server.generic.core/serverdef/sunappsrv-ant.xml:78: exec returned: 1
Total time: 2 seconds
apparemment, il ne trouve pas la classe Item... pourtant elle a été codée, en voici le début:[#|2009-01-09T16:29:56.861+0100|SEVERE|sun-appserver9.1|javax.enterprise.system.tools.deployment|_ThreadID=15;_ThreadName=Thread-30;_RequestID=731f5b4f-7e59-4a6f-90db-cc303b7e9c55;|Class [ com/yaps/petstore/entity/catalog/Item ] not found. Error while loading [ class com.yaps.petstore.stateless.catalog.CatalogBean ]|#]
[#|2009-01-09T16:29:56.862+0100|WARNING|sun-appserver9.1|javax.enterprise.system.tools.deployment|_ThreadID=15;_ThreadName=Thread-30;_RequestID=731f5b4f-7e59-4a6f-90db-cc303b7e9c55;|Error in annotation processing: java.lang.NoClassDefFoundError: com/yaps/petstore/entity/catalog/Item|#]
[#|2009-01-09T16:29:56.894+0100|SEVERE|sun-appserver9.1|javax.enterprise.system.tools.deployment|_ThreadID=15;_ThreadName=Thread-30;_RequestID=731f5b4f-7e59-4a6f-90db-cc303b7e9c55;|Une exception s''est produite dans la phase J2EEC.java.lang.IllegalArgumentException: Fichier jar EJB [YAPS_cellophane_ejb.jar] non valide : Il ne contient aucun EJB.
savez-vous comment continuer?
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 package com.yaps.petstore.entity.catalog; import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.PrePersist; import javax.persistence.PreUpdate; import javax.persistence.Table; import com.yaps.petstore.exception.ValidationException; @Entity @Table(name="t_item") public class Item implements Serializable{ public Item() { super(); } @Id @GeneratedValue(strategy=GenerationType.AUTO) private Long Id; @Column(nullable=false, length=30) private String name;
Question annexe: à propos des classes JPA, comment dois-je remplir une classe dont la clé est assignée automatiquement, je veux dire que dois-je mettre dans le champs Id: 0? null?
merci,
olivier.
Partager