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 :

Standalone Client et la bonne configuration côté client [EJB3]


Sujet :

Java EE

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 231
    Par défaut Standalone Client et la bonne configuration côté client
    BOnjour,

    J'ai déployé un module Ejb sur mon serveur GLASSFISH.

    Via une ligne de commande j'essai de lancer mon client qui appele via un Businness delegate et service locator mon EJB.

    Cependant quand j'execute mon client (via java - jar mon.jar), il me dit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Exception in thread "main" java.lang.NoClassDefFoundError: fr/hh/com/pers
    /Utilisateurs
            at hygienehospitaliere.Main.main(Main.java:49)
    Caused by: java.lang.ClassNotFoundException: fr.hh.com.persistence.Utilis
            at java.net.URLClassLoader$1.run(Unknown Source)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.net.URLClassLoader.findClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            at java.lang.ClassLoader.loadClassInternal(Unknown Source)
            ... 1 more
    Alors la question se pose est ce que dans le jar de mon client je dois également mettre les remotes interfaces, les pojos et/ou les beans?

    Voici la classe de mon 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
    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
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
     
    package hygienehospitaliere;
     
    import fr.hh.com.delegate.InterlocuteursDelegate;
    import fr.hh.com.delegate.PrelevementDelegate;
    import fr.hh.com.delegate.PreleveurDelegate;
    import fr.hh.com.delegate.SiteDelegate;
    import fr.hh.com.delegate.UtilisateursDelegate;
    import fr.hh.com.persistence.Adresse;
    import fr.hh.com.persistence.CodeDr;
    import fr.hh.com.persistence.Commune;
    import fr.hh.com.persistence.Echantillon;
    import fr.hh.com.persistence.Etat;
    import fr.hh.com.persistence.Interlocuteurs;
    import fr.hh.com.persistence.Lot;
    import fr.hh.com.persistence.Pays;
    import fr.hh.com.persistence.Prelevement;
    import fr.hh.com.persistence.Preleveur;
    import fr.hh.com.persistence.Prestation;
    import fr.hh.com.persistence.Role;
    import fr.hh.com.persistence.Site;
    import fr.hh.com.persistence.Test;
    import fr.hh.com.persistence.TypeEchantillon;
    import fr.hh.com.persistence.TypeEtablissement;
    import fr.hh.com.persistence.TypePersonnel;
    import fr.hh.com.persistence.Utilisateurs;
    import java.util.ArrayList;
    import java.util.List;
    import util.Date;
     
    /**
     *
     * @author Benjamin
     */
    public class Main {
     
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
     
                // TODO code application logic here
                System.out.println("ok");
     
                Utilisateurs user = new Utilisateurs("coucou", "ererfdfdfdf");
                Utilisateurs user2 = new Utilisateurs("ere", "dfdfdfddfdf");
                System.out.println("ok");
                Adresse a = new Adresse("peupliers", "bat e", "appt 701");
                Pays pays = new Pays("France");
                Commune commune = new Commune("59000", "Lille");
                System.out.println("ok");
                Role role = new Role("Administrateur");
     
                a.setPays(pays);
                a.setMCommune(commune);
     
                user.setNom("david");
                user.setTelephone("343434");
                user.setFax("3434");
                user.setMail("sfdsd@sds.fr");
                user.setFonction("admin");
                user.setPortable("ererer");
                user.setPrenom("azerty");
                user.setAdresse(a);
                user.setMRole(role);
                UtilisateursDelegate.createPreleveur(user, a, role);
     
                user2.setNom("benj");
                user2.setTelephone("343434");
                user2.setFax("3434");
                user2.setMail("sfdsd@sds.fr");
                user2.setFonction("admin");
                user2.setPortable("ererer");
                user2.setPrenom("azerty");
                user2.setAdresse(a);
                user2.setMRole(role);
                UtilisateursDelegate.createPreleveur(user2, a, role);
     
                Interlocuteurs i = new Interlocuteurs();
                i.setNom("benj");
                i.setTelephone("343434");
                i.setFax("3434");
                i.setMail("sfdsd@sds.fr");
                i.setFonction("admin");
                i.setPortable("ererer");
                i.setPrenom("azerty");
                i.setAdresse(a);
                InterlocuteursDelegate.createInterlocuteurs(i, a);
     
                Site s = new Site();
                CodeDr code = new CodeDr("libell");
                TypeEtablissement type = new TypeEtablissement("li");
                TypePersonnel tp = new TypePersonnel("er");
                Prestation p = new Prestation("e");
                s.setNom("benj");
                s.setTelephone("343434");
                s.setFax("3434");
                s.setMail("sfdsd@sds.fr");
                s.setCodeApe("rrer");
                s.setSiret("er");
                s.setTypeClient(true);
                s.setCodeClient(45);
                s.setTypeEtablissement(type);
                s.setTypePersonnel(tp);
                s.setPrestation(p);
                SiteDelegate.createSite(s, a, code, type, tp, p);
     
                Preleveur preleveur = new Preleveur();
                preleveur.setNom("benj");
                preleveur.setTelephone("343434");
                preleveur.setFax("3434");
                preleveur.setMail("sfdsd@sds.fr");
                preleveur.setCodeApe("rrer");
                preleveur.setSiret("er");
                preleveur.setTypeClient(true);
                preleveur.setCodeClient(45);
                PreleveurDelegate.createPreleveur(preleveur, a);
     
                /*on initialise la date*/
                new util.Date();
                Prelevement prelevement = new Prelevement("EXH", new java.util.Date(Date.getDate()));
                prelevement.setSite(s);
                prelevement.setPreleveur(preleveur);
                TypeEchantillon typeEch = new TypeEchantillon("4N");
                Test test = new Test("YCG");
                List<Echantillon> liste = new ArrayList<Echantillon>();
                prelevement.setEchantillon(liste);
                Echantillon ech = new Echantillon();
     
                ech.setPrelevement(prelevement);
                //ech2.setPrelevement(prelevement);
                ech.setTypeEchantillon(typeEch);
     
                ech.setTest(test);
                //ech2.setTest(test);
                ech.setEtat(Etat.getEtat("Enregistré"));
                //ech2.setEtat(Etat.getEtat("Validé"));
                prelevement.getEchantillon().add(ech);
                //prelevement.getEchantillon().add(ech2);
                List<Lot> liste2 = new ArrayList<Lot>();
                ech.setLot(liste2);
                Lot lot = new Lot(23, 3, new java.util.Date(Date.getDate()));
                Lot lot2 = new Lot(233, 3, new java.util.Date(Date.getDate()));
                lot.setEchantillon(ech);
                lot2.setEchantillon(ech);
                ech.getLot().add(lot);
                ech.getLot().add(lot2);
     
                PrelevementDelegate.createPrelevement(prelevement, s, preleveur);
     
        }
     
    }

    Merci d'avance.

  2. #2
    Invité(e)
    Invité(e)
    Par défaut
    bonjour,

    je crois que oui, enfin moi je procède de cette façon.
    mon client possède toutes les interfaces remote

    maintenant je ne sais pas si dans la pratique cela se fait.
    Mais logiquement tu es obligé car ton client va récupérer via un lookup une référence à une interface distante. Si il ne la possède pas lui même comment peut il connaitre le type ?

    il faut savoir (corrigez moi si je me trompe) que l'appel distant est différent de l'appel local, en effet par appel distant, tu récupère une référence de l'interface et non une copie (notion de passage par valeur ou par référence cela diffère en fonction du mode d'appel)

    je ne suis pas sur de la justesse de mes propos, cela n'est qu'un avis car j'en ai déjà entendu parler, mais si ça peut te permettre d'avancer en attendant un autre avis

    donc à mon sens je dirai que oui (pour le interfaces que tu récupère par le biais d'un look up).

    bon courrage

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 231
    Par défaut
    OK je précise mon business interface et mon service locator

    Business Delegate

    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
    package fr.hh.com.delegate;
     
     
    import fr.hh.com.locator.ServiceLocator;
    import fr.hh.com.persistence.Adresse;
    import fr.hh.com.persistence.Commune;
    import fr.hh.com.persistence.Pays;
    import fr.hh.com.persistence.Role;
    import fr.hh.com.persistence.Utilisateurs;
    import fr.hh.com.session.utilisateurs.UtilisateursRemote;
     
     
     
     
    /**
     * This class follows the Delegate design pattern. It's a one to one method
     * with the CustomerBean class. Each method delegates the call to the
     * CustomerBean class
     */
    public final class UtilisateursDelegate {
     
     
        public static Utilisateurs createPreleveur(Utilisateurs u,Adresse a,Role r) {
            return getUtilisateursRemote().createUtilisateurs(u, r, a);
        }
     
            public static Boolean paysExisteB(Pays pays){
            return getUtilisateursRemote().paysExisteB(pays);
        }
     
        public static Pays findPays(Long id){
            return getUtilisateursRemote().findPays(id);
        }
     
        public static Long paysExiste(Pays pays){
            return getUtilisateursRemote().paysExiste(pays);
        }
     
        public static Boolean communeExisteB(Commune commune){
            return getUtilisateursRemote().communeExisteB(commune);
        }
     
        public static Commune findCommune(Long id){
            return getUtilisateursRemote().findCommune(id);
        }
     
        public static Long communeExiste(Commune commune){
            return getUtilisateursRemote().communeExiste(commune);
        }
     
     
     
        // ======================================
        // =            Private methods         =
        // ======================================
        private static UtilisateursRemote getUtilisateursRemote() {
            UtilisateursRemote utilisateursRemote;
           utilisateursRemote = (UtilisateursRemote) ServiceLocator.getInstance().getRemoteInterface("ejb/stateless/Utilisateurs");
            return utilisateursRemote;
        }
    }
    mon Service Locator
    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
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    package fr.hh.com.locator;
     
    import fr.hh.com.exception.ServiceLocatorException;
    import java.util.HashMap;
    import java.util.Map;
    import javax.jms.ConnectionFactory;
    import javax.jms.Destination;
    import javax.naming.Context;
    import javax.naming.InitialContext;
     
    /**
     *
     * @author Benjamin
     */
    public class ServiceLocator {
     
        private final String cname = this.getClass().getName();
        private Context initalContext;
        private Map<String, Object> cache;
        // ======================================
        // =             Singleton              =
        // ======================================
        private static final ServiceLocator instance = new ServiceLocator();
     
        public static ServiceLocator getInstance() {
            return instance;
        }
     
        private ServiceLocator() throws ServiceLocatorException {
            try {
                initalContext = new InitialContext();
                cache = new HashMap<String, Object>();
            } catch (Exception e) {
                throw new ServiceLocatorException(e);
            }
        }
     
        /* @param jndiName JNDI name of the EJB that we are looking for
         * @return the EJB Home corresponding to the homeName
         * @throws ServiceLocatorException thrown if lookup problems
         */
        public Object getRemoteInterface(String jndiName) throws ServiceLocatorException {
            String methodName = "getRemoteInterface";
     
            Object remoteInterface = getRemoteObject(jndiName);
            return remoteInterface;
        }
     
        private synchronized Object getRemoteObject(String jndiName) throws ServiceLocatorException {
            String methodName = "getObject";
     
     
            Object remoteObject = cache.get(jndiName);
            if (remoteObject == null) {
                try {
                    remoteObject = initalContext.lookup(jndiName);
                    cache.put(jndiName, remoteObject);
                } catch (Exception e) {
                    throw new ServiceLocatorException(e);
                }
            }
            return remoteObject;
        }
     
        public ConnectionFactory getConnectionFactory(String connFactoryName) throws ServiceLocatorException {
            String methodName = "getConnectionFactory";
     
            ConnectionFactory factory = (ConnectionFactory) getRemoteObject(connFactoryName);
            return factory;
        }
     
        public Destination getDestination(String destinationName) {
            String methodName = "getDestination";
     
            Destination destination = (Destination) getRemoteObject(destinationName);
            return destination;
        }
     
    }

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 156
    Par défaut
    Il Il semblerait qu'en plus, les classes de tes entités ne soit pas intégrés à ton Jar car c'est d'abord la classe Utilisateur qui n'est pas trouvé.
    De plus je doute q'un java -jar LeJAR.jar soit suffisant pour faire fonctionner le client, car il faut coté client quelques classes J2EE et/ou spécifiques à ton serveur d'appli.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 231
    Par défaut
    Citation Envoyé par phantomass Voir le message
    Il Il semblerait qu'en plus, les classes de tes entités ne soit pas intégrés à ton Jar car c'est d'abord la classe Utilisateur qui n'est pas trouvé.
    Effectivement , Alors je dois egalement mettre mes pojos (ici utilisateurs) dans le client?
    ALors quel est l interet de faire un module ejb? si il ne met pas les pojos a disposition. La j'ai du louper un principe. Je vais vérifier.
    Citation Envoyé par phantomass Voir le message
    De plus je doute q'un java -jar LeJAR.jar soit suffisant pour faire fonctionner le client, car il faut coté client quelques classes J2EE et/ou spécifiques à ton serveur d'appli.
    Oui tout a fait j'inclu pas mal de librairies dans mon client comme appserver-rt.jar ou j2ee.jar, pas mal d'autres qui font références à glassfish.

    A savoir que sous netbeans le run de l application client fonctionne à merveille.

    Par ailleurs dans mon jar du client , il comprend également le jar du module ejb. N'est ce pas suffisant pour les entity?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 231
    Par défaut
    BOn j'ai ajouté à mon client les pojos et les remote.

    Je run à nouveau.

    Et j'ai a nouveau une erreur. A savoir que dans netbeans cela marche parfaitement.

    Erreur:

    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
    Exception in thread "main" fr.hh.com.exception.ServiceLocatorException: javax.
    ming.NoInitialContextException: Need to specify class name in environment or s
    tem property, or as an applet parameter, or in an application resource file:
    va.naming.factory.initial
            at fr.hh.com.locator.ServiceLocator.getRemoteObject(ServiceLocator.jav
    63)
            at fr.hh.com.locator.ServiceLocator.getRemoteInterface(ServiceLocator.
    va:49)
            at fr.hh.com.delegate.UtilisateursDelegate.getUtilisateursRemote(Utili
    teursDelegate.java:58)
            at fr.hh.com.delegate.UtilisateursDelegate.createPreleveur(Utilisateur
    elegate.java:24)
            at hygienehospitaliere.Main.main(Main.java:80)
    Caused by: javax.naming.NoInitialContextException: Need to specify class name
     environment or system property, or as an applet parameter, or in an applicati
     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 fr.hh.com.locator.ServiceLocator.getRemoteObject(ServiceLocator.jav
    60)
            ... 4 more
    Mon main reste le meme. Apparemment c est dans mon serviceLocator qu il foire.

    Ca doit etre un probleme de jndi. J'ai crée un fichier jndi.properties.

    Alors que dans mon serviceLocator, il crée le initialContext.

  7. #7
    Invité(e)
    Invité(e)
    Par défaut
    il y'a deux façon de définir le context:

    soit par un fichier de configuration:
    tu cré un fichier appelé jndi.properties qui contiendra ces lignes(à configuré en fonction de toi)

    moi j'utilise Jboss mais le principe reste le même je pense

    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:1199  //port à paramétrer
    ou alors tu définis un environnement pour ton context:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Hashtable<String, Object> env = new Hashtable<String, Object>();
    env.put("jndi","org.jnp.interfaces.NamingContextFactory");
     
    try {
     
    	Context oContext = new InitialContext(env);
    	TonInterface oCatalogue_int=(TonInterface )oContext.lookup("le nom donné à ton ejb");
    }
    catch(Exception e){
    }
    j'espère avoir répondu à ta question

    bon courrage

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 231
    Par défaut
    je précise que j'ai le appserv-rt.jar dans les librairies de l'appli cliente

  9. #9
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 156
    Par défaut
    Citation Envoyé par skyangel Voir le message
    Effectivement , Alors je dois egalement mettre mes pojos (ici utilisateurs) dans le client?
    ALors quel est l interet de faire un module ejb? si il ne met pas les pojos a disposition. La j'ai du louper un principe. Je vais vérifier.
    Si tu utilises concretement tes entités coté client il est normal quel soit disponibles dans le classpath du client.
    Tout simplement, déjà toute les classes neccessaires à la compilation de ton projet sont neccessaire à l'execution de ton projet.

    L'interet d'utliser les EJB sont :
    - Utilisation d'objet distant.
    - Integration des services JEE (support transactionnel, support de la sécurité etc ..)
    Effectivement si tu n'utilise ni accès distant, ni démarcation transationnelle, ni sécurité au niveau d'appel de méthodes etc .. (et j'en oublie) il est fort probable que les EJB ne soient pas neccessaire et qu'un framework à la Spring soit amplement suffisant.

  10. #10
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 156
    Par défaut
    Comme te l'as dit Amazoone il y a une petite étape de configration ou de programmation pour "parametrer" ton accès à l'annu JNDI.
    Regarde la documentation de ton serveur d'appli sur ce sujet.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 231
    Par défaut
    ok j'ai créé un fichier jndi.properties.

    Je build mon appli cliente et toujours la meme erreur.

    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
    Exception in thread "main" fr.hh.com.exception.ServiceLocatorException: javax.
    ming.NoInitialContextException: Need to specify class name in environment or s
    tem property, or as an applet parameter, or in an application resource file:
    va.naming.factory.initial
            at fr.hh.com.locator.ServiceLocator.getRemoteObject(ServiceLocator.jav
    63)
            at fr.hh.com.locator.ServiceLocator.getRemoteInterface(ServiceLocator.
    va:49)
            at fr.hh.com.delegate.UtilisateursDelegate.getUtilisateursRemote(Utili
    teursDelegate.java:58)
            at fr.hh.com.delegate.UtilisateursDelegate.createPreleveur(Utilisateur
    elegate.java:24)
            at hygienehospitaliere.Main.main(Main.java:80)
    Caused by: javax.naming.NoInitialContextException: Need to specify class name
     environment or system property, or as an applet parameter, or in an applicati
     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 fr.hh.com.locator.ServiceLocator.getRemoteObject(ServiceLocator.jav
    60)
            ... 4 more
    Le fichier jndi.properties je dois le mettre à la racine, je penses.

    Mais malgrès ca le ServiceLocator ne veut pas fonctionner.

  12. #12
    Invité(e)
    Invité(e)
    Par défaut
    quand tu dis à la racine, tu veux dire dans src ?
    car moi je l'ai mis dans le src de mon client

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 231
    Par défaut
    Citation Envoyé par amazoone Voir le message
    quand tu dis à la racine, tu veux dire dans src ?
    car moi je l'ai mis dans le src de mon client
    ouai moi ausii je l ai mis a la racine du client


    j 'ai essayé de le mettre à différent endroits.

  14. #14
    Invité(e)
    Invité(e)
    Par défaut
    personnelement moi j'aurai fais comme suit:

    dans le delegate:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ServiceLocator instance = new ServiceLocator();
    UtilisateursRemote utilisateursRemote = (UtilisateursRemote) instance.getRemoteInterface("ejb/stateless/Utilisateurs");
    dans le serviceLocator essai ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Context ctx = getJndiInitialContext();
    remoteObject ro = (remoteObject)ctx.lookup(jndiName);
    je garanti rien ^^

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 231
    Par défaut
    je vais essayer.

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 231
    Par défaut
    Lorsque je parcours l'intérieur de mon jar je peux voir deux fichiers jndi.properties aux emplacement suivants: META-INF et dans le package du main.class.

    Et ils sont bien configurés pour glassfish

  17. #17
    Invité(e)
    Invité(e)
    Par défaut
    normalement tu dois en avoir qu'un seul !?

    moi quand j'en avais deux j'avais une erreur à la génération de mon jar!
    normalement tu en a un seul qui se trouve a la racine de ton jar. Ni dans le META-INF ni autre part, uniquement à la racine du jar.

    enfin ça fonctionne comme ça pour moi

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 231
    Par défaut
    Ouai mais c est meme pas moi qui le mets à ces endroits . c'est au moment du build à travers netbeans.

    Sinon autre nouvelle:

    Lorsque je déploie mon ejb sur le serveur et que je déploie mon app cliente sur le serveur avec l'option java web start activé, et que je lance celle ci mon appli focntionne parfaitement.

    Alors question subsidiaire au problème actuelle:

    si depuis une autre machine j'attaque mon serveur et que je veux lancer mon app cliente cela fonctionnera t il ou faut il préciser des options de paramétrages?

  19. #19
    Invité(e)
    Invité(e)
    Par défaut
    alors je ne peux pas te dire ?
    je ne sais pas ce l'"option java web start activé" signifie

    moi personnellement je mes mon jar sur mon serveur, et jboss le déploie automatiquement au démarrage, ensuite je lance mon client sans aucune option

    normalement:

    soit tu gères les lookup sur le serveur
    et la ton client peut importe ou il se trouve

    soit tu gère les lookup sur le client alors la
    en toute logique je te répondrai oui, normalement depuis un autre ordinateur tu devrais pouvoir faire fonctionner ton application sauf si dans ton jndi.properties tu as mis localhost ou 127.0.0.1 au niveau du "java.naming.provider.url"

    si tu veux que ton client soit sur une machine distante, pense à changer ton provider en lui mettant l'adresse du serveur.

    mais en faite ton client ne fait aucun lookup ?
    c'est une appli web ?
    car si tu utilises le ServiceLocator c'est que tu gère les lookup au niveau du serveur non ?
    tu as implémenté le pattern ServiceLocator au niveau du client ?

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 231
    Par défaut
    Citation Envoyé par amazoone Voir le message
    mais en faite ton client ne fait aucun lookup ?
    je ne saurai te répondre à part que c'est mon service Locator qu il le fait je penses.
    Citation Envoyé par amazoone Voir le message
    c'est une appli web ?
    non une appli en consol epour l instant qui deviendra un client lourd
    Citation Envoyé par amazoone Voir le message
    car si tu utilises le ServiceLocator c'est que tu gère les lookup au niveau du serveur non ?
    tu as implémenté le pattern ServiceLocator au niveau du client ?
    Oui j'ai implémenté mon locator et mon business au niveau du client C'est faux?

    Je peux passer mes sources s il le faut

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Configuration ORACLE CLIENT 11
    Par BI2020 dans le forum Oracle
    Réponses: 10
    Dernier message: 23/06/2011, 15h40
  2. [WS 2003] dhcp configuration du client et du serveur ?
    Par delphino7 dans le forum Windows Serveur
    Réponses: 7
    Dernier message: 20/04/2009, 17h25
  3. Configuration du client OpenLDAP Solaris 10
    Par photorelief dans le forum Solaris
    Réponses: 2
    Dernier message: 19/03/2009, 15h04
  4. comment configurer des clients linux avec un controleur de domaine linux
    Par assousoft dans le forum Applications et environnements graphiques
    Réponses: 1
    Dernier message: 19/11/2008, 15h55
  5. Problème configuration dhcp3-client
    Par ibtisss dans le forum Administration système
    Réponses: 2
    Dernier message: 25/09/2006, 17h10

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