Retourner aux forums || Retourner au forum Programmation.java
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
le python, c'est bon
précision
J'ai pas précisé, mais quand JBoss rale, c'est pour dire :
15:22:45,703 INFO [STDOUT] javax.naming.NameNotFoundException: Usine not bound
le python, c'est bon
-
[^]Re: précision
Posté par cho7 (page perso, ) le 07/08/2006 à 14:01. (lien). Évalué à 2.J'ai orienté mon enquête vers le fichier ejb-jar.xml que je n'avais pas dans mon jar.
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>
--
le python, c'est bon
NetBeans
Je sais pas l'IDE avec lequel tu developpes, mais netbeans est super bien fait pour les EJB3 à mon gout. Il supporte JBoss en plus, et tu n'as pas besoin d'ecrire les fichiers ejb-jar.xml, etc...
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 (page perso, ) le 09/08/2006 à 10:13. (lien). Évalué à 2.C'est bon, j'ai trouvé mon problème !
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--
le python, c'est bon-
[^]Re: NetBeans
Posté par yann gabrielle () le 11/08/2006 à 07:34. (lien). Évalué à 1.salut,
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 (page perso, ) le 11/08/2006 à 11:18. (lien). Évalué à 2.ouuh que c'est pervers comme subtilité :)
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 !--
le python, c'est bon
-
-
Revenir en haut de page || Retourner aux forums || Retourner au forum Programmation.java



Cette discussion est archivée, il n'est plus possible de laisser des commentaires.
Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.