Forum Programmation.java Déployer un EJB

Posté par  (site web personnel) .
Étiquettes : aucune
0
7
août
2006
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  (site web personnel) . Évalué à 2.

    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
    • [^] # Re: précision

      Posté par  (site web personnel) . É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>

  • # NetBeans

    Posté par  . Évalué à 1.

    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  (site web personnel) . É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
      • [^] # Re: NetBeans

        Posté par  . É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  (site web personnel) . É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 !

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.