Je vais avoir du mal à suivre this guide à « extraire » mes interfaces et les entités de mon oreille pour les utiliser dans une autre application Web:Fractionnement et des interfaces dans EJB module séparé - le déploiement ne parvient
- J'utilise NetBeans 6.8 et Glassfish 3.0.1
- "Java Class Library" projet
- contient toutes les entités et les interfaces
- "Java EE Application" projet
- bibliothèque de classes ajoutée au projet, est emballé dans l'oreille
- contient des implémentations EJB, BDM, Test
- "Java Web Application" projet
- bibliothèque de classes ajoutée au projet, est empaquetée dans le WAR
- contient l'interface REST
Lorsque je compile et déploie l'application Web, tout se passe bien. Lorsque je compile l'application Java EE, je peux voir le fichier jar (interfaces, entités) inclus. Mais lorsque je tente de déployer l'AER, Glassfish il refuse avec une erreur java.lang.NoClassDefFoundError:
[#|2010-03-28T18:25:59.875+0200|WARNING|glassfishv3.0|javax.enterprise.system.tools.deployment.org.glassfish.deployment.common|_ThreadID=28;_ThreadName=Thread-1;|Error in annotation processing: java.lang.NoClassDefFoundError: mvs/core/StoreServiceLocal|#]
[#|2010-03-28T18:25:59.876+0200|SEVERE|glassfishv3.0|javax.enterprise.system.core.com.sun.enterprise.v3.server|_ThreadID=28;_ThreadName=Thread-1;|Exception while deploying the app
java.lang.IllegalArgumentException: Invalid ejb jar [CoreServer]: it contains zero ejb.
Note:
1. A valid ejb jar requires at least one session, entity (1.x/2.x style), or message-driven bean.
2. EJB3+ entity beans (@Entity) are POJOs and please package them as library jar.
3. If the jar file contains valid EJBs which are annotated with EJB component level annotations (@Stateless, @Stateful, @MessageDriven, @Singleton), please check server.log to see whether the annotations were processed properly.
« mvs/core/StoreServiceLocal » est une interface qui est définie dans le fichier jar de bibliothèque.
Qu'est-ce que je fais mal?
J'utilise les annotations EJB3, donc il n'y a pas descripteur de déploiement spécifique haricot:
mvs/core/ShopperService.java:
@Stateless
public class ShopperService implements ShopperServiceLocal, ShopperServiceRemote {
}
mvs/core/ShopperServiceLocal.java:
@Local
public interface ShopperServiceLocal {
}
Le fichier manifeste du fichier JAR (META-INF/ejb-jar.xml) contient-il des références à vos classes de beans? –
@Achim: J'utilise EJB3, donc pas de descripteurs de déploiement. J'ai mis à jour mon message en conséquence. Pensez-vous que je devrais utiliser un descripteur de déploiement à la place? – Hank
Les annotations sont correctes. Je voulais juste vérifier s'il y a peut-être un conflit. –