Bonjour,
je m'amuse depuis quelques jours avec les EJB 3.0, et je dois dire que, autant les coder me semble relativement simple, autant les déployer est une toute autre histoire !!
Supposons une classe EJB nommée model.UsineBean
Dans sa déclaration, j'ai précisé
@Stateless(name="Usine")
Pour utiliser cet EJB depuis une application web, je dois d'abord le récuperer du context du serveur.
Pour se faire, sous JDeveloper et son serveur embarqué OC4J, je passe par un code de ce genre :
usine = (Usine) ctx.lookup("Usine");
Si je veux déployer sous Sun Application Server, je dois utiliser
usine = (Usine) ctx.lookup("model.Usine");
Pour déployer sous JBoss, je n'ai toujours pas trouvé quel nom il veut.
J'ai tenté, en vrac:
"Usine", "UsineBean", "Usine/remote", "UsineBean/remote", etc.
Rien n'y fait, je n'y pige plus rien... Comment s'assurer du nom du bean une fois mis dans le contexte serveur ?
En fait, quand j'ajoute mon fichier jar contenant l'EJB, le serveur ne semble pas réagir, alors que quand j'ajoute le fichier .ear de mon appli web, là il la voit et la démarre. Peut être que mon EJB n'est tout simplement pas JBoss Compliant ? J'ai tenté d'ajouter dans le classpath de mon EJB les lib de JBoss comme j'ai pu lire quelque part, mais ca n'a pas changé grand chose...
Si quelqu'un à déjà rencontré les mêmes problèmes...
Merci pour l'aide
# précision
Posté par cho7 (site web personnel) . Évalué à 2.
15:22:45,703 INFO [STDOUT] javax.naming.NameNotFoundException: Usine not bound
[^] # Re: précision
Posté par cho7 (site web personnel) . Évalué à 2.
Désormais j'ai :
15:57:58,859 ERROR [MainDeployer] Could not create deployment: file:/E:/jboss-4.0.3SP1/server/default/deploy/ejb1.jar
org.jboss.deployment.DeploymentException: Verification of Enterprise Beans failed, see above for error messages.
at org.jboss.ejb.EJBDeployer.create(EJBDeployer.java:575)
C'est plutôt une bonne nouvelle, puisque désormais JBoss voit mon jar quand je le dépose dans /deploy
Le contenu de mon ejb-jar.xml est :
<?xml version="1.0"?>
<!DOCTYPE ejb-jar PUBLIC
'-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 1.1//EN'
'http://java.sun.com/j2ee/dtds/ejb-jar_1_1.dtd'>
<ejb-jar>
<enterprise-beans>
<session>
<ejb-name>Usine</ejb-name>
<home>model.UsineLocal</home>
<remote>model.Usine</remote>
<ejb-class>model.UsineBean</ejb-class>
<!-- or Stateless -->
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
</ejb-jar>
# NetBeans
Posté par yann gabrielle . Évalué à 1.
sous jboss par defaut, le jndi de ton appli est la suivante :
par exemple si tu as une appli qui s'appelle monappli.ear et tu as un bean UsineBean en acces remote.
le lookup aura alors cette forme :
monappli/UsineBean/remote
si il te dis encore un not bound, il faut aller dans la JMX-console
http://localhost:8080/jmx-console/
ensuite clique sur "service=JNDIView"
puis invoke la méthode java.lang.String list() qui te donne la liste de toute les JNDI.
tu devrais retrouver ton appli dans le Global JNDI Namespace.
[^] # Re: NetBeans
Posté par cho7 (site web personnel) . Évalué à 2.
En fait ce crétin de jboss 4.0 veut que je définisse mes EJB selon la norme 2.1, donc il rallait car je mettais pas implements SessionBean, public void ejbCreate(), etc, etc.
Je saisi toujours pas pourquoi il ne veut pas manger mes ejb 3.0 :-/
En tout cas merci pour le truc de jmx-console, je connaissais pas
[^] # Re: NetBeans
Posté par yann gabrielle . Évalué à 1.
pour que jboss puisse manger ton ejb3, il faut que tu mettes le module EJB3, car par default il y est pas.
dans server/default/deploy/ tu dois avoir un repertoire "ejb3.deployer".
le plus simple si je me rappelle bien c'est de download le .jar sur le site de jboss et de lancer l'install via leur interface, comme ca tu peuc lui dire d'ajouter le support EJB3 a ta config default
bon courage
[^] # Re: NetBeans
Posté par cho7 (site web personnel) . Évalué à 2.
c'est effectivement marqué sur le site de jboss, il faut prendre l'installateur .jar et pas l'installateur en java web start
Merci beaucoup !
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.