IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Wildfly/JBoss Java Discussion :

JBoss Eclipse IDE - Tutoriel - Problème déploiement


Sujet :

Wildfly/JBoss Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 35
    Points : 25
    Points
    25
    Par défaut JBoss Eclipse IDE - Tutoriel - Problème déploiement
    Bonjour,
    Je cherche à découvrir les EJB (je débute dans ce secteur donc) et j'ai décidé de m'appuyer sur JBoss et JBoss Eclipse IDE.
    J'ai tenté de réaliser le tutoriel que l'on trouve sur le site de JBoss.
    Tout va bien j'usqu'au chapitre 11 : le déploiement.

    Ma configuration :
    - serveur JBoss 4.0.2
    - Eclipse 3.1.1
    - plugin JBoss IDE 1.6.0 (téléchargé par maj auto dans Eclipse samedi)
    - jdk/jre 1.5.0_05

    Mon problème :
    Le seveur démarre bien sous controle d'Eclipse, mais le déploiement donne des défauts. Voici les messages (en 2 temps puisque j'ai fait une tentatve pour résoudre (en rouge mes commentaires) .


    Le premier temps :

    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
    34
    35
    36
    37
    38
    39
    21:32:07,958 WARN  [verifier] EJB spec violation: 
    Bean   : Fibo
    Method : public abstract Fibo create() throws CreateException
    Section: 7.10.6
    Warning: The methods in the home interface must include java.rmi.RemoteException in their throws clause.
    
    Mes commentaires :
    J'ai rajouté l'exception  RemoteException dans la clause throws de la métode ejbCreate() de la classe FiboBean.
    
    21:32:07,978 WARN  [verifier] EJB spec violation: 
    Bean   : Fibo
    Section: 22.2
    Warning: The bean provider must specify the fully-qualified name of the enterprise bean's local home interface, if any, in the <local-home> element.
    Info   : Class not found on 'tutoriel.interfaces.FiboLocalHome': No ClassLoaders found for: tutoriel.interfaces.FiboLocalHome
    
    Mes commentaires :
    Dans le fichier src/META-INF/ejb-jar.xml il y a le code suivant
         <!-- Session Beans -->
          <session >
             <description><![CDATA[]]></description>
             <ejb-name>Fibo</ejb-name>
             <home>tutoriel.interfaces.FiboHome</home>
             <remote>tutoriel.interfaces.Fibo</remote>
             <local-home>tutoriel.interfaces.FiboLocalHome</local-home>
             <local>tutoriel.interfaces.FiboLocal</local>
             <ejb-class>tutoriel.ejb.FiboBean</ejb-class>
             <session-type>Stateless</session-type>
             <transaction-type>Container</transaction-type>
          </session>
    
    J'ai supprimé le texte en vert.
    
    
    21:32:07,988 WARN  [verifier] EJB spec violation: 
    Bean   : Fibo
    Section: 22.2
    Warning: The bean provider must specify the fully-qualified name of the enterprise bean's local interface, if any, in the <local> element.
    Info   : Class not found on 'tutoriel.interfaces.FiboLocal': No ClassLoaders found for: tutoriel.interfaces.FiboLocal
    Le deuxième temps : les choses "empirent"

    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
    34
    35
    36
    37
    38
    39
    40
    41
     
    22:05:24,689 WARN  [verifier] EJB spec violation: 
    Bean   : Fibo
    Section: 7.10.7
    Warning: The local interface must extend the javax.ejb.EJBLocalObject interface.
     
    22:05:24,699 WARN  [verifier] EJB spec violation: 
    Bean   : Fibo
    Method : public abstract [D calculer(int) throws RemoteException
    Section: 7.10.7
    Warning: The methods in the local interface must not include java.rmi.RemoteException in their throws clause.
     
    22:05:24,699 WARN  [verifier] EJB spec violation: 
    Bean   : Fibo
    Method : public abstract void remove() throws RemoteException, RemoveException
    Section: 7.10.7
    Warning: The methods in the local interface must not include java.rmi.RemoteException in their throws clause.
     
    22:05:24,699 WARN  [verifier] EJB spec violation: 
    Bean   : Fibo
    Method : public abstract Handle getHandle() throws RemoteException
    Section: 7.10.7
    Warning: The methods in the local interface must not include java.rmi.RemoteException in their throws clause.
     
    22:05:24,699 WARN  [verifier] EJB spec violation: 
    Bean   : Fibo
    Method : public abstract EJBHome getEJBHome() throws RemoteException
    Section: 7.10.7
    Warning: The methods in the local interface must not include java.rmi.RemoteException in their throws clause.
     
    22:05:24,699 WARN  [verifier] EJB spec violation: 
    Bean   : Fibo
    Method : public abstract Object getPrimaryKey() throws RemoteException
    Section: 7.10.7
    Warning: The methods in the local interface must not include java.rmi.RemoteException in their throws clause.
     
    22:05:24,699 WARN  [verifier] EJB spec violation: 
    Bean   : Fibo
    Method : public abstract boolean isIdentical(EJBObject) throws RemoteException
    Section: 7.10.7
    Warning: The methods in the local interface must not include java.rmi.RemoteException in their throws clause.
    Là j'en perd mon latin, car un certain nombre de méthodes citées en défaut ne sont même pas implémentées (je suppose qu'elles sont dans les classes/interfaces dont on hérite).

    Enfin, de l'aide SVP !!

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Janvier 2006
    Messages : 365
    Points : 495
    Points
    495
    Par défaut
    21:32:07,958 WARN [verifier] EJB spec violation:
    Bean : Fibo
    Method : public abstract Fibo create() throws CreateException
    Section: 7.10.6
    Warning: The methods in the home interface must include java.rmi.RemoteException in their throws clause.

    Mes commentaires :
    J'ai rajouté l'exception RemoteException dans la clause throws de la métode ejbCreate() de la classe FiboBean.
    Tu dois rajouter RemoteException dans la clause throws de la méthode create() de l'interface Fibo, et non pas pour la méthode ejbCreate.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public abstract Fibo create() throws CreateException, RemoteException
    21:32:07,978 WARN [verifier] EJB spec violation:
    Bean : Fibo
    Section: 22.2
    Warning: The bean provider must specify the fully-qualified name of the enterprise bean's local home interface, if any, in the <local-home> element.
    Info : Class not found on 'tutoriel.interfaces.FiboLocalHome': No ClassLoaders found for: tutoriel.interfaces.FiboLocalHome

    Mes commentaires :
    Dans le fichier src/META-INF/ejb-jar.xml il y a le code suivant
    <!-- Session Beans -->
    <session >
    <description><![CDATA[]]></description>
    <ejb-name>Fibo</ejb-name>
    <home>tutoriel.interfaces.FiboHome</home>
    <remote>tutoriel.interfaces.Fibo</remote>
    <local-home>tutoriel.interfaces.FiboLocalHome</local-home>
    <local>tutoriel.interfaces.FiboLocal</local>
    <ejb-class>tutoriel.ejb.FiboBean</ejb-class>
    <session-type>Stateless</session-type>
    <transaction-type>Container</transaction-type>
    </session>

    J'ai supprimé le texte en vert.
    Tu ne devrais pas supprimer seulement ce qui est en vert, mais toute la ligne <local-home> et la ligne <local> pour éviter ces warning. Sinon il te faut créer ces interfaces locales FiboLocalHome et FiboLocal pour pouvoir les déclarer dans le descripteur de déploiement.
    A mon avis, tu devrais essayer de comprendre un peu tous ces concepts d'interfaces locales et interfaces distantes pour que les choses soient plus claires.
    SCJP 5 / SCBCD 1.3 Certified

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 35
    Points : 25
    Points
    25
    Par défaut
    manblaizo, merci piour ta réponse.

    Juste quelques précisions :

    Tu dois rajouter RemoteException dans la clause throws de la méthode create() de l'interface Fibo, et non pas pour la méthode ejbCreate.
    Si j'ai rajouté RemoteException à ejbCreate, c'est qu'elle exitait déjà dans l'interface Fibo méthode create() ??

    A mon avis, tu devrais essayer de comprendre un peu tous ces concepts d'interfaces locales et interfaces distantes pour que les choses soient plus claires.
    Effectivement tu as raison, lorsque j'aurais appronfondis les concepts tout ira mieux. Mais quelques lectures d'initiation m'ont fait connaître l'existance de ces deux types d'interfaces (locale et distante) et leur rôle respectif. C'est pour cela que je désire expérimenter maintenant, et pour cela j'ai opté pour l'outil JBoss Eclipse IDE et son tutoriel (Peut-être existe-t-il des outils plus adaptés pour démarer ?).
    Je constate, si je ne me trompe pas, qu'il est conçu pour générer automatiquement un certain nombre de choses (dont les fameuses interfaces) et que je n'y arrive pas (j'ai bien écrit je : je dois mal m'y prendre).

    Je vais essayer tes conseils et je reviendrais entretenir cette discussion de "débutant" en EJB en espérant qu'elle puisse servir à d'autres.

    encore merci, et à bientôt.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Janvier 2006
    Messages : 365
    Points : 495
    Points
    495
    Par défaut
    Juste quelques précisions :

    Si j'ai rajouté RemoteException à ejbCreate, c'est qu'elle exitait déjà dans l'interface Fibo méthode create() ??
    Non, tu rajoutes RemoteException à toutes les méthodes des interfaces distantes parce qu'elles étendent l'interface Remote (via EJBHome et EJBObject). Par contre, tu ne déclares pas de RemoteException pour les méthodes de la classe bean, de même que pour les méthodes des interfaces locales.

    Effectivement tu as raison, lorsque j'aurais appronfondis les concepts tout ira mieux. Mais quelques lectures d'initiation m'ont fait connaître l'existance de ces deux types d'interfaces (locale et distante) et leur rôle respectif. C'est pour cela que je désire expérimenter maintenant, et pour cela j'ai opté pour l'outil JBoss Eclipse IDE et son tutoriel (Peut-être existe-t-il des outils plus adaptés pour démarer ?).
    Je constate, si je ne me trompe pas, qu'il est conçu pour générer automatiquement un certain nombre de choses (dont les fameuses interfaces) et que je n'y arrive pas (j'ai bien écrit je : je dois mal m'y prendre).
    Oui, en fait, avec JBossIDE tu utilises des balises XDoclet en implémentant que la classe bean, et les différentes interfaces sont générer automatiquement. Je dirais que cela facilite le travail du développeur en automatisant tout ce qui peut l'être, mais il est important de bien savoir ce qui est généré et de quelle façon.
    SCJP 5 / SCBCD 1.3 Certified

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 35
    Points : 25
    Points
    25
    Par défaut
    Ça y est : j’ai réussi à faire fonctionner l’exemple tutoriel FiboBean.

    J’ai tout de même rencontré quelques modes de fonctionnement de JBoss Eclipse IDE qui peuvent dérouter les débutants dans ce domaine (comme moi). Ce ne sont pas des choses qui dévalorisent le logiciel, mais si on le les sais pas on y perd son latin.

    Voici un récapitulatif de ce que j’ai constaté (sans explications certaines, donc discutables).

    1) Problème de départ : erreurs au déploiement (chapitre 11 du tutoriel) de l’application sur des RemoteException.
    2) Comme le dit plus haut manblaizo (merci) :
    a. on ne doit pas la trouver RemoteException dans la clause throws de la méthode ejbCreate() de la classe FiboBean.java (la classe EJB à proprement parler), ni sur les méthodes « métier » de cette classe. Par contre, les autres méthodes créées automatiquement par le plugin en sont agrémentées,
    b. la méthode unique (dans l’exemple), des interfaces [public double[] calculer( int nombre ) pour Fibo.java (la remote) et public tutoriel.interfaces.Fibo create() pour FiboHome.java (la local)] doivent avoir RemoteException dans leur clause throws.
    3) Là où je me suis fait piéger (sans doute par manque à la foi de pratique et d’information).
    Si on suit le déroulement du tutorial, il est demandé d’actionner Run XDoclet à plusieurs stades de l’élaboration de la configuration de XDoclet. Mais ce qu’il faut savoir (et là est la subtilité, le piège malgré lui ?) : si les objets de la génération (ici les interfaces, les descriptifs de déploiement XML) existent déjà au moment de l’action sur Run XDoclet, ils ne sont pas écrasés et re-générés (Voir en fin d’article les messages console qui le confirment).
    Le problème que j’ai constaté (et pour lequel je n’ai pas d’explication) est que les exceptions RemoteExeception ne sont pas placées là où il faut si on suit la chronologie du tutoriel, il faut tout générer à la fin (donc veiller à ce que rien n’existe au préalable).
    Cela explique aussi pourquoi, lors de mes premiers essais, je trouvais des RemoteExeption là où les messages d’erreur de déploiement me disaient qu’il fallait en mettre (ou vis et versa) : cela dépendait (du moins je le suppose à ce stade) du moment et de la chronologie des générations automatiques.

    « Etonnant, non ! », comme dirait Monsieur Cyclopède.

    Voilà ce que je peux apporter en guise de conclusion sur la mise en fonctionnement de l’exemple du tutoriel (je vais marquer cette discussion comme Résolue). Bien sûr, le débat sur mes propos ci-dessus qui sont ouverts à tous compléments et corrections.

    Maintenant les choses « intéressantes » commencent. Comme le conseille, à juste titre, manblaizo, je vais pouvoir continuer vers mon objectif de départ : étudier et expérimenter plus en avant les EJB.

    A bientôt sans doute sur les forums de développez.com !!


    Les messages de console diffusés lors de l'action sur Run XDoclet :


    A) si les objets de la génération existent déjà

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Buildfile: G:\projet_j2ee\tutoriel\xdoclet-build.xml
    N65540:
    [ejbdoclet] (XDocletMain.start        47  ) Running <deploymentdescriptor/>
    [ejbdoclet] (XDocletMain.start        47  ) Running <jboss/>
    [ejbdoclet] (XDocletMain.start        47  ) Running <remoteinterface/>
    [ejbdoclet] (XDocletMain.start        47  ) Running <homeinterface/>
    N66256:
    [webdoclet] (XDocletMain.start        47  ) Running <deploymentdescriptor/>
    [webdoclet] (XDocletMain.start        47  ) Running <jbosswebxml/>
    _xdoclet_generation_:
    BUILD SUCCESSFUL
    Total time: 7 seconds
    B) si les objets de la génération n’existent pas déjà : on voit bien en plus les lignes de confirmation de génération effectives

    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
    Buildfile: G:\projet_j2ee\tutoriel\xdoclet-build.xml
    N65540:
    [ejbdoclet] (XDocletMain.start        47  ) Running <deploymentdescriptor/>
    [ejbdoclet] Generating EJB deployment descriptor (ejb-jar.xml).
    [ejbdoclet] (XDocletMain.start        47  ) Running <jboss/>
    [ejbdoclet] Generating jboss.xml.
    [ejbdoclet] (XDocletMain.start        47  ) Running <remoteinterface/>
    [ejbdoclet] Generating Remote interface for 'tutoriel.ejb.FiboBean'.
    [ejbdoclet] (XDocletMain.start        47  ) Running <homeinterface/>
    [ejbdoclet] Generating Home interface for 'tutoriel.ejb.FiboBean'.
    N66256:
    [webdoclet] (XDocletMain.start        47  ) Running <deploymentdescriptor/>
    [webdoclet] Generating web.xml.
    [webdoclet] (XDocletMain.start        47  ) Running <jbosswebxml/>
    [webdoclet] (TemplateSubTask.engineStarted  806 ) Generating output 'jboss-web.xml' using template file 'jar:file:/F:/Eclipse3_1_1_jboss_ide/eclipse/plugins/org.jboss.ide.eclipse.xdoclet.core_1.6.0.GA/xdoclet-jboss-module-1.2.3.jar!/xdoclet/modules/jboss/web/resources/jboss_web_xml.xdt'.
    _xdoclet_generation_:
    BUILD SUCCESSFUL
    Total time: 5 seconds

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/11/2009, 15h32
  2. Problème déploiement EJB3 JBoss Cargo
    Par vain_mich dans le forum Maven
    Réponses: 1
    Dernier message: 27/07/2007, 10h46
  3. [JBoss Eclipse IDE] configuration
    Par midou29 dans le forum Wildfly/JBoss
    Réponses: 1
    Dernier message: 06/07/2007, 15h06
  4. [Plugin][easytruts] Jboss Eclipse IDE
    Par Ahmed0012 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 10/03/2006, 15h35
  5. [Jboss+Eclipse] Cherche tutoriel pour créer des EJB3
    Par ericw78 dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 26/08/2005, 16h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo