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

Java EE Discussion :

Problème de connection avec mon premier EJB..


Sujet :

Java EE

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 66
    Points : 30
    Points
    30
    Par défaut Problème de connection avec mon premier EJB..
    Bonjour,

    J'essaie d'executer mon premier EJB (session bean) sur Jboss. J'ai déployé mon EJB avec Eclipse et son plugin JBOSS IDE. Le déploiement semble s'être bien passé mais je ne sais pas comment utiliser JBOSS pour le vérifier...

    Maintenant j'ai compilé mon application cliente. J'ai dû ajouter appserv-rt.jar pour éliminer une première erreure de connection avec initialContext:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // lookup InterestCalculator EJB
     
             Object homeObject = 
     
                initialContext.lookup( "InterestCalculator" );
    Maintenant j'ai une seconde erreure:

    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
    4 avr. 2007 18:23:03 com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl <init>
    ATTENTION: "IOP00410201: (COMM_FAILURE) Connection failure: socketType: IIOP_CLEAR_TEXT; hostname: localhost; port: 3700"
    org.omg.CORBA.COMM_FAILURE:   vmcid: SUN  minor code: 201  completed: No
    	at com.sun.corba.ee.impl.logging.ORBUtilSystemException.connectFailure(ORBUtilSystemException.java:2348)
    	at com.sun.corba.ee.impl.logging.ORBUtilSystemException.connectFailure(ORBUtilSystemException.java:2369)
    	at com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.<init>(SocketOrChannelConnectionImpl.java:212)
    	at com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.<init>(SocketOrChannelConnectionImpl.java:225)
    	at com.sun.corba.ee.impl.transport.SocketOrChannelContactInfoImpl.createConnection(SocketOrChannelContactInfoImpl.java:104)
    	at com.sun.corba.ee.impl.protocol.CorbaClientRequestDispatcherImpl.beginRequest(CorbaClientRequestDispatcherImpl.java:159)
    	at com.sun.corba.ee.impl.protocol.CorbaClientDelegateImpl.request(CorbaClientDelegateImpl.java:156)
    	at com.sun.corba.ee.impl.protocol.CorbaClientDelegateImpl.is_a(CorbaClientDelegateImpl.java:296)
    	at org.omg.CORBA.portable.ObjectImpl._is_a(ObjectImpl.java:112)
    	at org.omg.CosNaming.NamingContextHelper.narrow(NamingContextHelper.java:69)
    	at com.sun.enterprise.naming.SerialContext.narrowProvider(SerialContext.java:110)
    	at com.sun.enterprise.naming.SerialContext.getProvider(SerialContext.java:164)
    	at com.sun.enterprise.naming.SerialContext.lookup(SerialContext.java:309)
    	at javax.naming.InitialContext.lookup(InitialContext.java:392)
    	at InterestCalculatorClient.createInterestCalculator(InterestCalculatorClient.java:82)
    	at InterestCalculatorClient.<init>(InterestCalculatorClient.java:40)
    	at InterestCalculatorClient.main(InterestCalculatorClient.java:311)
    Caused by: java.lang.RuntimeException: java.net.ConnectException: Connexion refusée
    	at com.sun.enterprise.iiop.IIOPSSLSocketFactory.createSocket(IIOPSSLSocketFactory.java:356)
    	at com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.<init>(SocketOrChannelConnectionImpl.java:195)
    	... 14 more
    Caused by: java.net.ConnectException: Connexion refusée
    	at sun.nio.ch.Net.connect(Native Method)
    	at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:507)
    	at java.nio.channels.SocketChannel.open(SocketChannel.java:146)
    	at com.sun.enterprise.iiop.IIOPSSLSocketFactory.createSocket(IIOPSSLSocketFactory.java:340)
    	... 15 more




    Je n'ai rien trouvé sur google concernant cette erreure donc j'ai vraiment besoin de votre aide. Pour information voici mon fichier application.xml:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE application PUBLIC
    	"-//Sun Microsystems, Inc.//DTD J2EE Application 1.3//EN"
    	"http://java.sun.com/dtd/application_1_3.dtd">
    <application>
    	<display-name>InterestCalculator</display-name>
    	<module>
    		<ejb>InterestCalculator.jar</ejb>
    	</module>
    </application>

    et mon fichier ejb-jar.xml:

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    <?xml version="1.0" encoding="UTF-8"?>
     
    <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">
     
    <ejb-jar >
     
       <description><![CDATA[No Description.]]></description>
       <display-name>Generated by XDoclet</display-name>
     
       <enterprise-beans>
     
          <!-- Session Beans -->
          <session >
             <description><![CDATA[Description for InterestCalculator]]></description>
             <display-name>InterestCalculator</display-name>
     
             <ejb-name>InterestCalculator</ejb-name>
     
             <home>tutorial.interfaces.InterestCalculatorHome</home>
             <remote>tutorial.interfaces.InterestCalculator</remote>
             <ejb-class>tutorial.ejb.InterestCalculatorEJB</ejb-class>
             <session-type>Stateless</session-type>
             <transaction-type>Container</transaction-type>
     
          </session>
     
         <!--
           To add session beans that you have deployment descriptor info for, add
           a file to your XDoclet merge directory called session-beans.xml that contains
           the <session></session> markup for those beans.
         -->
     
          <!-- Entity Beans -->
         <!--
           To add entity beans that you have deployment descriptor info for, add
           a file to your XDoclet merge directory called entity-beans.xml that contains
           the <entity></entity> markup for those beans.
         -->
     
          <!-- Message Driven Beans -->
         <!--
           To add message driven beans that you have deployment descriptor info for, add
           a file to your XDoclet merge directory called message-driven-beans.xml that contains
           the <message-driven></message-driven> markup for those beans.
         -->
     
       </enterprise-beans>
     
       <!-- Relationships -->
     
       <!-- Assembly Descriptor -->
         <!--
           To specify your own assembly descriptor info here, add a file to your
           XDoclet merge directory called assembly-descriptor.xml that contains
           the <assembly-descriptor></assembly-descriptor> markup.
         -->
     
       <assembly-descriptor >
         <!--
           To specify additional security-role elements, add a file in the merge
           directory called ejb-security-roles.xml that contains them.
         -->
     
       <!-- method permissions -->
         <!--
           To specify additional method-permission elements, add a file in the merge
           directory called ejb-method-permissions.ent that contains them.
         -->
     
       <!-- transactions -->
         <!--
           To specify additional container-transaction elements, add a file in the merge
           directory called ejb-container-transactions.ent that contains them.
         -->
     
       <!-- finder transactions -->
     
       <!-- message destinations -->
         <!--
           To specify additional message-destination elements, add a file in the merge
           directory called ejb-message-destinations.ent that contains them.
         -->
     
       <!-- exclude list -->
         <!--
           To specify an exclude-list element, add a file in the merge directory
           called ejb-exclude-list.xml that contains it.
         -->
       </assembly-descriptor>
     
    </ejb-jar>
    et mon fichier jboss.xml:

    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
    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE jboss PUBLIC
    "-//JBoss//DTD JBOSS 3.0//EN" "http://www.jboss.org/j2ee/dtd/jboss_3_0.dtd">
     
    <jboss>
     
       <enterprise-beans>
     
         <!--
           To add beans that you have deployment descriptor info for, add
           a file to your XDoclet merge directory called jboss-beans.xml that contains
           the <session></session>, <entity></entity> and <message-driven></message-driven>
           markup for those beans.
         -->
     
          <session>
             <ejb-name>InterestCalculator</ejb-name>
             <jndi-name>ejb/InterestCalculator</jndi-name>
     
          </session>
     
        <!--
          write a merge file jboss-webservices.ent for webservice-description 
        -->
     
       </enterprise-beans>
     
       <resource-managers>
       </resource-managers>
     
      <!--
        | for container settings, you can merge in jboss-container.xml
        | this can contain <invoker-proxy-bindings/> and <container-configurations/>
      -->
     
    </jboss>
    Merci pour votre aide!

    Patrick

  2. #2
    Membre émérite
    Avatar de alexismp
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 503
    Points : 2 777
    Points
    2 777
    Par défaut
    Si c'est ton premier EJB, tu devrais vraiment regarder du coté des EJB 3.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 66
    Points : 30
    Points
    30
    Par défaut
    J'ai suivi un tutoriel Eclipse avec JBOSS IDE et il me semble bien que c'est un EJB 3.0 que j'ai fait. En fait, qu'est ce que cela changera à mon problème de connexion si je fais un EJB 3.0?

  4. #4
    Membre émérite
    Avatar de alexismp
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 503
    Points : 2 777
    Points
    2 777
    Par défaut
    tes fichiers de config sont beaucoup trop complexes et parlent de "Enterprise JavaBeans 2.0". L'accès aux EJB 3 se fait sans JNDI. Voici un exemple simple d'EJB 3 avec NetBeans et GlassFish.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 66
    Points : 30
    Points
    30
    Par défaut
    Je n'ai pas de tutoriel pour les EJB 3.0, par ailleurs je peux être amené à modifier des EJB 2.0 existant, je souhaite donc commencer par executer un EJB 2.0 très simple...

    J'ai acheté le livre "Eclipse et JBOSS" dans lequel j'ai trouvé un second tutoriel pour un EJB 2.0. Je l'ai suivit pour tester un second EJB. Pour la création de l'EJB j'ai bien fait, et il semble correctement déployé sur JBOSS, je le vois avec la console jmx.

    Pour le client, ce second tutoriel diffère du précédant en incluant les librairies jbossall-client.jar et run.jar que j'ai trouvé dans l'arborescence JBOSS respectivement dans les répertoires client et bin.

    Maintenant j'ai toujours une erreur mais elle est différente, la voici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
    	at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
    	at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
    	at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325)
    	at javax.naming.InitialContext.lookup(InitialContext.java:392)
    	at com.test.TestSimpleBean.main(TestSimpleBean.java:16)
    J'ai l'impression qu'il y a un problème d'installation, peut être de version des différents composants. Voici ce que j'utilise:

    - jboss 4.0.5.GA
    - Java(TM) SE Runtime Environment (build 1.6.0-b105)
    - JEE 1.4 pour compiler l'EJB

    Sinon le problème est dans les librairies utilisées par le client.
    J'utilise:
    -run.jar
    - jbossall-client.jar
    - jre system library

    voici le code de mon application cliente pour mon second tutoriel:
    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
     
    package com.test;
     
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.rmi.PortableRemoteObject;
    import com.test.interfaces.*;
     
     
    public class TestSimpleBean {
    	public static void main(String[] args){
    		MonEJBSessionHome testSessionBean=null;
    		MonEJBSession beanRemote=null;
     
    		try {
    			InitialContext ctx = new InitialContext();
    			Object objref = ctx.lookup("ejb/MonEJBSessionHome");
    			testSessionBean = (MonEJBSessionHome)PortableRemoteObject.narrow(objref, 
    					MonEJBSessionHome.class);
     
    			beanRemote = testSessionBean.create();
    			System.out.println(beanRemote.SayHelloSessionBean());
    		} catch (Exception NamingException){
    			NamingException.printStackTrace();
    		}
    	}
    }
    J'ai ajouté "ejb/..." devant le nom dans le code client de mon premier tutoriel et j'obtiens la même erreur...

    Comment diagnostiquer? Où est le problème?

    Merci pour votre aide!

    Patrick

  6. #6
    Membre émérite
    Avatar de alexismp
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 503
    Points : 2 777
    Points
    2 777
    Par défaut
    Citation Envoyé par gelinp
    Je n'ai pas de tutoriel pour les EJB 3.0, par ailleurs je peux être amené à modifier des EJB 2.0 existant, je souhaite donc commencer par executer un EJB 2.0 très simple...
    EJB 3 est beaucoup beaucoup beaucoup plus simple (surtout quand tu commences).

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 66
    Points : 30
    Points
    30
    Par défaut
    Je viens de résoudre mon problème. Il fallait ajouter le fichier jndi.properties dans mon application cliente afin qu'il soit trouvé dans le CLASSPATH.

    jndi.properties (pour JBOSS):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
    java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
    java.naming.provider.url=localhost:1099
    Il fallait aussi ajouter ejb/... devant le nom de mon EJB dans mon application cliente, comme le montre le code exemple que j'ai publié précédemment.

    Merci pour votre aide!

    Patrick

  8. #8
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par gelinp
    Je viens de résoudre mon problème. Il fallait ajouter le fichier jndi.properties dans mon application cliente afin qu'il soit trouvé dans le CLASSPATH.

    jndi.properties (pour JBOSS):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
    java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
    java.naming.provider.url=localhost:1099
    Il fallait aussi ajouter ejb/... devant le nom de mon EJB dans mon application cliente, comme le montre le code exemple que j'ai publié précédemment.

    Merci pour votre aide!

    Patrick

    salut gelinp

    je rencontrer le meme probleme:
    pourriez vous me donnez le solution avec un peu de detail parceque je suis un debutant

    le code de mon classe client


    InitialContext ctx =
    new InitialContext();

    Object obj = ctx.lookup(
    "ejb/Login");
    loginHome = (LoginHome)javax.rmi.PortableRemoteObject.narrow(obj,LoginHome.
    class);
    loginBean = loginHome.create();

    System.out.println("appel de la fonction getId "+loginBean.loginUser("adil","adil"));

    le pb est le suisvant:

    javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
    at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
    at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
    at javax.naming.InitialContext.getURLOrDefaultInitCtx(Unknown Source)
    at javax.naming.InitialContext.lookup(Unknown Source)
    at com.cap.login.client.Test.main(Test.java:32)


    merci d'avance

Discussions similaires

  1. Problème avec mon Premier trigger
    Par ed222 dans le forum Développement
    Réponses: 4
    Dernier message: 09/06/2010, 12h16
  2. [PERL]problème avec mon premier programme
    Par lucifer01 dans le forum Programmation et administration système
    Réponses: 4
    Dernier message: 07/04/2009, 18h38
  3. Problème avec mon premier exécutable en java
    Par Icefire dans le forum Débuter avec Java
    Réponses: 9
    Dernier message: 25/04/2008, 09h42
  4. Problème de connection avec ADO
    Par t0ine dans le forum C++Builder
    Réponses: 3
    Dernier message: 07/02/2006, 11h33
  5. Problème de connection avec phpmyadmin
    Par callo dans le forum Outils
    Réponses: 4
    Dernier message: 20/05/2005, 13h35

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