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 :

Indiquer le serveur d'EJB à une application [JNDI]


Sujet :

Java EE

  1. #1
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 711
    Points : 4 792
    Points
    4 792
    Par défaut Indiquer le serveur d'EJB à une application
    Bonjour,

    J'ai créé un EJB HelloWorldBean qui renvoie "Bonjour" et qui fonctionne bien.

    Problème : lorsque je vais le déployer sur des postes clients, il faudra bien que je lui indique le serveur d'EJB.

    J'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
            InitialContext ctx;
            try {
                Properties ppt = new Properties();
                ppt.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.cosnaming.CNCtxFactory");
                ppt.put(Context.PROVIDER_URL, "iiop://Admin:3700");                        
                ctx = new InitialContext(ppt);            
                Object ref = ctx.lookup("HelloWorldRemote");    // ça plante ici
     
                HelloWorldBean = (HelloWorldRemote)PortableRemoteObject.narrow(ref,HelloWorldRemote.class);
                System.out.println(HelloWorldBean.DitBonjour());
            } catch (NamingException ex) {
                ex.printStackTrace();
            }
    Mais il m'envoie promener:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    javax.naming.NameNotFoundException [Root exception is org.omg.CosNaming.NamingContextPackage.NotFound: IDL:omg.org/CosNaming/NamingContext/NotFound:1.0]
    Quelqu'un aurait-il une bonne piste pour que mon appli java (en stand-alone sur le poste client) puisse se connecter à l'EJB ?

    Contexte :
    Serveur EJB = "sun java system application server" sur un serveur Windows 2000.
    Poste de développement = Netbeans 5.5.1. sous XP


    Merci d'avance de vos conseils

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 62
    Points : 71
    Points
    71
    Par défaut
    Salut,

    Je pense que tu as la réponse ici : http://docs.sun.com/app/docs/doc/819...5sbeo2h?a=view

    Je n'ai jamais testé, mais il me esemble que c'est assez bien expliqué, et que ça répond à ton problème.

    Bonne journée.

  3. #3
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 711
    Points : 4 792
    Points
    4 792
    Par défaut
    Bonjour, la page de sun explique comment utiliser le "Naming Service". Ce n'est pas ce que je cherche.
    La préconisation de sun est de modifier les paramètres de la JVM du client ce qui est exclu car l'application sera diffusée par Java Web Start.


    Je suppose que mon premier post n'était pas assez clair.

    Mon problème est :
    comment, à partir d'une application locale (type client-lourd),
    me connecter à un EJB déployé sur un serveur "sun java system application server" (équivalent Glassfish) ?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 52
    Points : 63
    Points
    63
    Par défaut
    Si le déploiement se fait par Java Web Start alors tout simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    import javax.ejb.EJB;
     
        @EJB
        public static HelloWorldRemote HelloWorldBean;
    Je l'utilise avec GlassFish sans problème.

  5. #5
    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
    Sinon, cette page contient certainement les infos qui t'intéresse:
    https://glassfish.dev.java.net/javaee5/ejb/EJB_FAQ.html

    Clairement l'injection de ressources est plus élégant et tellement plus simple...

  6. #6
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 711
    Points : 4 792
    Points
    4 792
    Par défaut
    Bonjour Alexis,

    Dans la doc associée au lien, j'ai bien vu ce que j'avais déjà vu sur un autre site :
    If the stand-alone java client is running on a different host than the server, set the -Dorg.omg.CORBA.ORBInitialHost property when starting the client JVM.
    Comme je le disais plus haut, je n'ai pas accès aux paramétrages de démarrage de la JVM dans la mesure où mon appli sera déployée par JWS.

    J'ai l'impression que je fais fausse route avec les EJBs.
    Après discussion avec un ami, celui-ci me suggère d'utiliser plutôt les webservices comme étant plus simples à mettre en oeuvre.

    Il s'agit d'une application de démonstration qui sera téléchargée sur internet via JWS.
    N'importe qui pourra donc la télécharger pour pouvoir l'essayer avec une vraie connexion à la base de donnée centralisée.

    Le système doit donc se composer de :

    A: [Un serveur SQL server] qui ne doit pas être exposé directement à internet
    B: [Un serveur "intermédiaire"] qui reçoit les demandes des postes clients et qui les transmet au serveur A
    C: [Poste(s) clients] qui vont se connecter à B pour enregistrer les données saisies et recevoir les données stockées dans A

    Le hiatus réside donc dans la "couche B" : que choisir ?
    Penses-tu que les webservices poseront, dans mon cas, moins de problèmes que les EJBs ?

    J'en profite pour remercier tout le monde pour le temps que vous passez là-dessus.

  7. #7
    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
    La fonctionnalité JavaWebStart de GlassFish te permet de déployer des application ACC (Application Client Container) ou ce paramètrage n'est pas nécessaire.

    Les EJB utilisent IIOP pour communiquer. Si ton client accède directement aux EJB (avec ou sans ACC), tu ne pourras pas passer les firewalls en l'état (besoin de tunneling pas évident à mettre en oeuvre).

    Les Web Services semblent effectivement proposer une approche plus flexible donc. Java 6 intègre JAX-WS ce qui rend l'intégration plutôt naturelle.

  8. #8
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 711
    Points : 4 792
    Points
    4 792
    Par défaut Webservices
    Bon alors je teste un helloworld en websercice avec Netbeans + tomcat.

    Cela fonctionne impect en local.

    Je dois être très bête ou maudit mais, dans un second temps, après avoir installé Tomcat sur un serveur (autre que le poste local), je suis incapable de le déclarer dans Netbeans

    Dans la partie "addserver", il me demande un répertoire local ...
    Comment faire pour lui dire d'aller chercher un serveur "Http://Admin:8080/"

    Je désespère

  9. #9
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 711
    Points : 4 792
    Points
    4 792
    Par défaut Toujours un problème plus loin ...
    Bon, c'était naturellement un problème dans la partie cliente.
    Dans NetBeans, il suffisait de :
    - aller dans le projet
    - Ouvrir Web Service References
    - virer la référence au WS qui était connecté au Tomcat local
    puis re-créer le WS avec un nouveau Web service client avec la bonne connexion en cliquant sur WSDL URL.

    J'en suis donc maintenant au problème suivant :
    l'application cliente plante avec cette exception :
    javax.xml.ws.WebServiceException: java.net.ConnectException: Connection refused: connect

    à l'évidence, je n'ai pas bien paramétré quelque chose ...
    Si quelqu'un a une idée ...

  10. #10
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 711
    Points : 4 792
    Points
    4 792
    Par défaut Changement de serveur
    La solution pour moi a été de démonter Tomcat et mettre le "sun java system application server" (= glassfish) avec lequel je me sens plus à l'aise.

    En résumé :
    1) je développe le web service avec netbeans
    2) je le déploie sur le serveur en un clic
    3) dans netbeans je développe l'application cliente en ayant soin d'ajouter le web service. L'assistant est génial pour ça.
    4) dans l'application cliente, je fais appel au WS.
    5) j'ai testé le "stand alone" en double-cliquant sur le jar du client et tout va bien

    Ma prochaine étape sera de récupérer des tableaux de données mais cela est un autre problème et fera l'objet d'un autre post. Je considère celui-ci comme résolu.

    Je remercie donc tous ceux qui m'ont aidé en participant à cette discussion.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/10/2012, 12h09
  2. Configuration d’un serveur pour héberger une application Web
    Par SaladinDev dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 21/11/2011, 09h08
  3. Intégrer serveur web dans une application c#
    Par CARNIBAL dans le forum Silverlight
    Réponses: 6
    Dernier message: 18/09/2009, 15h25
  4. Interroger le serveur OLAP avec une application java
    Par bena.habib dans le forum Autres outils décisionnels
    Réponses: 0
    Dernier message: 16/06/2008, 19h09
  5. Réponses: 0
    Dernier message: 27/11/2007, 14h37

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