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

Weblogic Java Discussion :

Problème de JNDI lookup avec EJB3


Sujet :

Weblogic Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Septembre 2008
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 86
    Points : 35
    Points
    35
    Par défaut Problème de JNDI lookup avec EJB3
    Bonjour.

    Jusqu'à présent je travaillais avec jboss. Maintenant je dois utiliser weblogic (10.3).

    Et je m'arrache les cheveux.

    J'ai bien créé un domaine et démarré le serveur.

    Je voudrais tester avec un ejb (qui fonctionne tel quel dans jboss).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    package server;
     
    import javax.ejb.Remote;
     
    @Remote
    public interface TestBeanRemote
      {
      int Add(int x,int y);
      }
    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
     
    package server;
     
    import javax.annotation.PostConstruct;
    import javax.ejb.Stateless;
     
    @Stateless()
    public class TestBean implements TestBeanRemote
      {
      public int Add(int x, int y)
        {
    	System.out.println("Adding "+x+" and "+y);
        return x + y;
        }
     
      @PostConstruct()
      public void debut() {
         System.out.println("Starting " + this);
      }
     
    }
    et le client
    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
     
    package client;
     
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import server.TestBeanRemote;
     
    public class Test1
      {
      public static void main(String[] args)
        {
        System.out.println("Test Ejb1 Wl");
        try
          {
          Context context = new InitialContext();
          TestBeanRemote tb = (TestBeanRemote)context.lookup("TestBean/remote");
          System.out.println("Resultat : " + tb.Add(5,3));
          } 
        catch (Exception e)
          {
          e.printStackTrace();
          }
     
        }
      }
    avec jndi.properties
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory
    java.naming.provider.url=t3://127.0.0.1:7001
    Dans jboss ça marche tout seul. (avec un jndi.properties différent bien entendu).

    Mais ici j'ai

    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
         [java] Test Ejb1 Wl
         [java] javax.naming.CommunicationException [Root exception is java.rmi.ConnectIOException: error during JRMP connection establishment; nested exception is: 
         [java] 	java.io.EOFException]
         [java] 	at weblogic.jrmp.Context.lookup(Context.java:189)
         [java] 	at weblogic.jrmp.Context.lookup(Context.java:195)
         [java] 	at javax.naming.InitialContext.lookup(Unknown Source)
         [java] 	at client.Test1.main(Test1.java:15)
         [java] Caused by: java.rmi.ConnectIOException: error during JRMP connection establishment; nested exception is: 
         [java] 	java.io.EOFException
         [java] 	at sun.rmi.transport.tcp.TCPChannel.createConnection(Unknown Source)
         [java] 	at sun.rmi.transport.tcp.TCPChannel.newConnection(Unknown Source)
         [java] 	at sun.rmi.server.UnicastRef.newCall(Unknown Source)
         [java] 	at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
         [java] 	at weblogic.jrmp.Context.lookup(Context.java:185)
         [java] 	... 3 more
         [java] Caused by: java.io.EOFException
         [java] 	at java.io.DataInputStream.readByte(Unknown Source)
         [java] 	... 8 more
    Qu'est-ce qui cloche ?


    Edit : si je regarde dans la console web, le nom jndi est
    _appsdir_ejb1_jarejb1_jarTestBean_TestBeanRemote
    J'ai don essayé avec
    TestBeanRemote tb = (TestBeanRemote)context.lookup("_appsdir_ejb1_jarejb1_jarTestBean_TestBeanRemote");
    mais ça ne change rien.


    Et question subsidiaire : avec jboss, quand je déploie un jar la console m'affiche des infos sur le déploiement mais avec weblogic rien. Il y a moyen de configurer le log de la console ?

  2. #2
    Nouveau membre du Club
    Inscrit en
    Septembre 2008
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 86
    Points : 35
    Points
    35
    Par défaut
    Personne pour m'aider ?

    Si l'un d'entre vous utilise weblogic, pourrait-il écrire un tout simple ejb du même style pour que je puisse voir si le problème vient de mon serveur ?

    Merci.

  3. #3
    Membre confirmé Avatar de Mobius
    Profil pro
    none
    Inscrit en
    Avril 2005
    Messages
    463
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : none

    Informations forums :
    Inscription : Avril 2005
    Messages : 463
    Points : 558
    Points
    558
    Par défaut
    Étrange ton erreur, je n'ai jamais eut ce type d'erreur.

    Tu peux regarder le fichier "servers/AdminServer/logs/AdminServer.log" dans ton domaine.
    Des logs doivent être ajouté a ce fichier lors de chaque redéploiement de ton ejb.
    Le mieux est quand meme de préciser explicitement le nom jndi de ton ejb car sinon c'est weblogic qui en génère un (et pas forcément ce qu'il y a de plus clair)
    Librairie d'accès LDAP en Java : LdapBeans
    et pensez au tag

  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
    Citation Envoyé par Mobius Voir le message
    Le mieux est quand meme de préciser explicitement le nom jndi de ton ejb car sinon c'est weblogic qui en génère un (et pas forcément ce qu'il y a de plus clair)
    Oui, c'est bien, avec weblogic il vaut mieux spécifier le nom jdni :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @Stateless(mappedName="MonTestBean")
    public class TestBean implements TestBeanRemote {
    ...
    Ensuite on fait le lookup sur <MappedName#package.RemoteName> :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TestBeanRemote tb = (TestBeanRemote)context.lookup("MonTestBean#" + TestBeanRemote.class.getName());
    Tous ces problèmes de noms jndi incompatibles entre serveurs d'applications ont été résolus dans EJB 3.1 qui standardise les global jndi names. Mais bon, il n'y a pas encore de weblogic compatible Java EE 6; au courant de l'année peut-être.
    SCJP 5 / SCBCD 1.3 Certified

  5. #5
    Membre du Club
    Inscrit en
    Août 2010
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 78
    Points : 63
    Points
    63
    Par défaut
    j'ai le meme probleme ..

    voila mes differentes classes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    package com.ayoub;
     
     
    import javax.ejb.Remote;
     
    @Remote
    public interface PremierEJB3 {
       public String ditBonjour(String aQui);
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    package com.ayoub;
     
     
    import javax.ejb.Stateless;
     
    @Stateless(name="PremierEJB3Bean",mappedName="PremierEJB3Bean") 
    public class PremierEJB3Bean implements PremierEJB3 {
       public String ditBonjour(String aQui) {
          return "Bonjour " + aQui + " !!!";
       }
    }
    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
     
    package com.ayoub;
    import java.util.Properties;
     
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
     
    public class Test {
     
       public static void main(String[] args) {
     
    	   Properties p=new Properties();
    	      p.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
    	      p.put(Context.PROVIDER_URL,"t3://localhost:7001");
    	   try {
     
    	         Context context = new InitialContext(p);
    	         PremierEJB3 beanRemote = (PremierEJB3) context.lookup("PremierEJB3Bean#"+com.ayoub.PremierEJB3.class.getName());
    	         System.out.println(beanRemote.ditBonjour("Test"));
    	      } catch (NamingException e) {
    	         e.printStackTrace();
    	      }
    	   }
     
       }
    et l erreur qui s'affiche sur la console est :

    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
    javax.naming.NameNotFoundException: While trying to lookup 'PremierEJB3Bean#com.ayoub.PremierEJB3' didn't find subcontext 'PremierEJB3Bean#com'. Resolved '' [Root exception is javax.naming.NameNotFoundException: While trying to lookup 'PremierEJB3Bean#com.ayoub.PremierEJB3' didn't find subcontext 'PremierEJB3Bean#com'. Resolved '']; remaining name 'PremierEJB3Bean#com/ayoub/PremierEJB3'
    	at weblogic.rjvm.ResponseImpl.unmarshalReturn(ResponseImpl.java:234)
    	at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:348)
    	at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:259)
    	at weblogic.jndi.internal.ServerNamingNode_1034_WLStub.lookup(Unknown Source)
    	at weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:423)
    	at weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:411)
    	at javax.naming.InitialContext.lookup(InitialContext.java:392)
    	at com.ayoub.Test.main(Test.java:18)
    Caused by: javax.naming.NameNotFoundException: While trying to lookup 'PremierEJB3Bean#com.ayoub.PremierEJB3' didn't find subcontext 'PremierEJB3Bean#com'. Resolved ''
    	at weblogic.jndi.internal.BasicNamingNode.newNameNotFoundException(BasicNamingNode.java:1139)
    	at weblogic.jndi.internal.BasicNamingNode.lookupHere(BasicNamingNode.java:247)
    	at weblogic.jndi.internal.ServerNamingNode.lookupHere(ServerNamingNode.java:182)
    	at weblogic.jndi.internal.BasicNamingNode.lookup(BasicNamingNode.java:206)
    	at weblogic.jndi.internal.RootNamingNode_WLSkel.invoke(Unknown Source)
    	at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:667)
    	at weblogic.rmi.cluster.ClusterableServerRef.invoke(ClusterableServerRef.java:230)
    	at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:522)
    	at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
    	at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:146)
    	at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:518)
    	at weblogic.rmi.internal.wls.WLSExecuteRequest.run(WLSExecuteRequest.java:118)
    	at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
    	at weblogic.work.ExecuteThread.run(ExecuteThread.java:176)

Discussions similaires

  1. [Débutant] Problème d’héritage avec EJB3
    Par ghost10 dans le forum Persistance des données
    Réponses: 4
    Dernier message: 28/10/2010, 02h25
  2. [EJB3] problème de fetch=lazy avec ejb3
    Par pbdlpc dans le forum JPA
    Réponses: 2
    Dernier message: 16/01/2007, 22h52
  3. Problème de connexion SqlServer avec JNDI
    Par s.lakhlifi dans le forum JDBC
    Réponses: 5
    Dernier message: 09/06/2006, 14h28
  4. Problème de basckup Restore avec IBCONSOLE
    Par myseb dans le forum Outils
    Réponses: 10
    Dernier message: 04/11/2004, 15h48
  5. problème de capture son avec Directshow
    Par albator83 dans le forum DirectX
    Réponses: 2
    Dernier message: 06/11/2003, 18h18

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