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

Langage Java Discussion :

Client EJB et l'adresse du Serveur


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 10
    Par défaut Client EJB et l'adresse du Serveur
    Bonjour,

    J'ai fais un Stateless EJB très simple, qui permet d'additionner ou de soustraire deux entiers, mais je bloque au niveau du client qui dois utiliser cet EJB (je l'ai pris à partir d'un exemple que j'ai trouvé) mais je ne comprends pas où est ce qu'il faut préciser l'adresse du serveur pour le client. A aucun moment dans le code source du client on ne vois d'adresse du serveur ! Comment ça se fait ?

    J'utilise NetBeans 6.9.1 avec GlassFish Server 3.

    La classe de l'EJB :

    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
    package cours;
     
    import javax.ejb.Stateless;
     
    @Stateless
    public class CalcBean implements CalcBeanRemote {
     
        public int add(int a, int b) {
            System.out.println("dans add");
            return a + b;
        }
     
        public int sub(int a, int b) {
            System.out.println("dans sub");
            return a - b;
        }
    }
    L'interface de l'EJB:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    package cours;
     
    import javax.ejb.Remote;
     
    @Remote
    public interface CalcBeanRemote {
         public int add(int a, int b);
          public int sub(int a, int b);
    }
    Et un 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
    package test;
     
    import cours.CalcBeanRemote;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
     
    public class Main {
     
        public static void main(String[] args) throws NamingException {
     
            InitialContext ic = new InitialContext();
            CalcBeanRemote calcul = (CalcBeanRemote) ic.lookup("cours.CalcBeanRemote");
     
            System.out.println(calcul.add(5, 4));
            System.out.println(calcul.sub(5, 4));
        }
    }
    Et pourtant ça affiche bien:
    9
    1

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    961
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 961
    Par défaut
    Fichier jndi.properties. Il se peut que le client se connecte au localhost par défaut. Plus d'infos : http://download.oracle.com/javase/jn...nv/source.html .

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 10
    Par défaut
    Citation Envoyé par BugFactory Voir le message
    Fichier jndi.properties. Il se peut que le client se connecte au localhost par défaut. Plus d'infos : http://download.oracle.com/javase/jn...nv/source.html .
    D'accord je vais voir ça.
    Par contre j'ai ajouté certains fonctions callbacks à mon bean, mais maintenant quand j'exécute le client il me sort l'exception suivante:

    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
    run:
    24 nov. 2010 15:51:09 com.sun.enterprise.transaction.JavaEETransactionManagerSimplified initDelegates
    INFO: Using com.sun.enterprise.transaction.jts.JavaEETransactionManagerJTSDelegate as the delegate
    Exception in thread "main" javax.naming.NamingException: Lookup failed for 'cours.CalcBeanRemote' in SerialContext ,orb'sInitialHost=localhost,orb'sInitialPort=3700 [Root exception is javax.naming.NameNotFoundException: cours.CalcBeanRemote not found]
            at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:442)
            at javax.naming.InitialContext.lookup(InitialContext.java:392)
            at test.Main.main(Main.java:12)
    Caused by: javax.naming.NameNotFoundException: cours.CalcBeanRemote not found
            at com.sun.enterprise.naming.impl.TransientContext.doLookup(TransientContext.java:197)
            at com.sun.enterprise.naming.impl.TransientContext.lookup(TransientContext.java:168)
            at com.sun.enterprise.naming.impl.SerialContextProviderImpl.lookup(SerialContextProviderImpl.java:58)
            at com.sun.enterprise.naming.impl.RemoteSerialContextProviderImpl.lookup(RemoteSerialContextProviderImpl.java:89)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:597)
            at com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie.dispatchToMethod(ReflectiveTie.java:146)
            at com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie._invoke(ReflectiveTie.java:176)
            at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatchToServant(CorbaServerRequestDispatcherImpl.java:682)
            at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(CorbaServerRequestDispatcherImpl.java:216)
            at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequestRequest(CorbaMessageMediatorImpl.java:1841)
            at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:1695)
            at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleInput(CorbaMessageMediatorImpl.java:1078)
            at com.sun.corba.ee.impl.protocol.giopmsgheaders.RequestMessage_1_2.callback(RequestMessage_1_2.java:221)
            at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:797)
            at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.dispatch(CorbaMessageMediatorImpl.java:561)
            at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.doWork(CorbaMessageMediatorImpl.java:2558)
            at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.performWork(ThreadPoolImpl.java:492)
            at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:528)
    Java Result: 1
    BUILD SUCCESSFUL (total time: 15 seconds)
    Voici le nouveau code du bean:

    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
    package cours;
     
    import javax.ejb.Stateless;
    import javax.interceptor.Interceptors;
     
    @Stateless
    @Interceptors(Callbacks.class)
    public class CalcBean implements CalcBeanRemote {
     
        public int add(int a, int b) {
            System.out.println("dans add");
            return a + b;
        }
     
        public int sub(int a, int b) {
            System.out.println("dans sub");
            return a - b;
        }
    }
    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 cours;
     
    import javax.annotation.*;
    import javax.ejb.*;
     
    public class Callbacks {
     
        @PostConstruct
        public void Construct() {
            System.out.println("Post Construct ...");
        }
     
        @PreDestroy
        public void Destroy() {
            System.out.println("Pre Destroy ...");
        }
     
        @PrePassivate
        public void Passivate() {
            System.out.println("Pre Passivate ...");
        }
     
        @PostActivate
        public void Acatetiv() {
            System.out.println("Post Activate ...");
        }
    }

Discussions similaires

  1. Connexion serveur / client en utilisant l'adresse IP externe
    Par sghaierbs dans le forum Entrée/Sortie
    Réponses: 31
    Dernier message: 10/02/2013, 17h48
  2. Réponses: 8
    Dernier message: 15/02/2010, 12h01
  3. interdire un client d'avoir une adresse ip du serveur dhcp
    Par kerkennah dans le forum Windows Serveur
    Réponses: 7
    Dernier message: 06/03/2007, 10h07
  4. Comment un client peut Passer son IOR au serveur ?
    Par ratapapa dans le forum CORBA
    Réponses: 2
    Dernier message: 14/12/2005, 00h19
  5. [SERVLET] trouver adresse du serveur
    Par Super Castor dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 09/10/2003, 16h20

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