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

Glassfish et Payara Java Discussion :

Quels sont les paramètres JNDI pour GlassFish ?


Sujet :

Glassfish et Payara Java

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 802
    Points : 653
    Points
    653
    Par défaut Quels sont les paramètres JNDI pour GlassFish ?
    Salut !

    J'imagine que cette question a déjà été posée mais je n'ai trouvé de response nulle part. A chaque fois, ce sont les paramètres pour JBoss qu'on trouve :

    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
    Donc ma question, quels sont paramètres jndi pour GlassFish ?

  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
    En mettant appserv-rt.jar dans le CLASSPATH, la lecture automatique de jndi.properties permet de ne pas spécifier explicitement ces valeurs.
    Les voici quand même:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    java.naming.factory.initial=com.sun.enterprise.naming.SerialInitContextFactory
    java.naming.factory.url.pkgs=com.sun.enterprise.naming
    java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 802
    Points : 653
    Points
    653
    Par défaut
    Merci pour l'info

  4. #4
    Membre à l'essai
    Inscrit en
    Janvier 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 11
    Points : 11
    Points
    11
    Par défaut 2 choix sont possibles
    1 er choix :
    tu fais copier/coller du contenu suivant dans un fichier que tu vas nommer jndi.properties et que tu mettras dans ton root.

    java.naming.factory.initial = com.sun.enterprise.naming.SerialInitContextFactory
    java.naming.factory.url.pkgs = com.sun.enterprise.naming
    java.naming.factory.state = com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl
    #optional. Defaults to localhost. Only needed if web server is running
    #on a different host than the appserver
    org.omg.CORBA.ORBInitialHost = localhost
    #optional. Defaults to 3700. Only needed if target orb port is not 3700.
    org.omg.CORBA.ORBInitialPort = 3700


    ensuite dans le code tu fais appel à ce jndi.properties de la façon suivante :

    Properties props = new Properties();
    props.load(new FileInputStream("jndi.properties"));
    InitialContext ctx = new InitialContext(props);

    2 éme choix :
    c'est comme a dit notre ami , les developpeurs de Glassfish ont développé pour nous un .jar qui fait appel automatiquement au fichier jndi.properties , dans ce cas tu dois inclure dans ton classpath le jar appserv-rt.jar et ensuite dans ton code tu fais appel au jndi de la façon suivante :

    InitialContext ctx = new InitialContext();

    Bon courage.

  5. #5
    Membre habitué
    Inscrit en
    Avril 2010
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 342
    Points : 161
    Points
    161
    Par défaut
    Je n'ai plus voulu poster un autre post. En fait j'ai le même problème, j'ai suivis tous les conseils dans ce post, mais ça ne marche toujours pas. J'ai créer un projet EJB simple
    INTERFACE
    package hello.service;
    import javax.ejb.*;

    @Local
    public interface HelloService {
    public String sayHello(String name);
    }

    IMPLÉMENTATION DU EJB


    package hello.service;
    import javax.ejb.*;

    @Stateless
    public class HelloServiceBean implements HelloService {

    @Override
    public String sayHello(String name) {
    return "Hello Mr or Mss " + name;
    }
    }
    J'intègre ensuite ce petit projet EJB dans la Classpath de mon Projet Web. Ensuite dans ma Servlet je fais d'abord une injection, puisque le projet web et le projet EJB sont tous dans le même conteneur
    import javax.ejb.*;

    import hello.service.*;

    @EJB

    private HelloService testEJB;
    System.out.println(testEJB.sayHello("Jean Pierre Destin"));
    Quand je le fais, la Servlet ne s'affiche même pas, il dit Ressource introuvable, Lorsque je commente le code d'appel de l'EJB, la page de ma Servlet s'affiche sans problème.

    Je décide alors de passer par le JNDI, là je suis toutes les instructions données dans ce Post, les deux méthodes, c'est-à-dire avec le fichier jndi.properties sur la racine de mon projet ou alors l'intégration de la bibliothèque appserv-rt.jar dans mon Classpath (de mon projet EJB et même de mon projet Web). Mais ces deux derniers cas me renvoient le message suivant :
    GRAVE: javax.naming.NamingException: Lookup failed for 'HelloServiceBean' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NameNotFoundException: HelloServiceBean not found]
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:518)
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:455)
    at javax.naming.InitialContext.lookup(InitialContext.java:392)
    at javax.naming.InitialContext.lookup(InitialContext.java:392)
    at controlGestEcole.ServletControl.doGet(ServletControl.java:55)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:735)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1534)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
    at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:326)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:227)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:170)
    at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822)
    at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719)
    at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1013)
    at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
    at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
    at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
    at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
    at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
    at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
    at java.lang.Thread.run(Thread.java:662)


    Caused by: javax.naming.NameNotFoundException: HelloServiceBean not found
    at com.sun.enterprise.naming.impl.TransientContext.doLookup(TransientContext.java:248)
    at com.sun.enterprise.naming.impl.TransientContext.lookup(TransientContext.java:215)
    at com.sun.enterprise.naming.impl.SerialContextProviderImpl.lookup(SerialContextProviderImpl.java:77)
    at com.sun.enterprise.naming.impl.LocalSerialContextProviderImpl.lookup(LocalSerialContextProviderImpl.java:119)
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:505)
    ... 31 more
    Quelqu'un a-t-il une idée SVP ?

    Merci.

  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
    Ce n'est pas une bonne idée de passer par JNDI. Je viens de tester avec une simple injection @EJB, tout fonctionne. Qu'y a-t-il dans le log de GlassFish?

  7. #7
    Membre habitué
    Inscrit en
    Avril 2010
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 342
    Points : 161
    Points
    161
    Par défaut
    Dans mon log de GlassFish aucun message ne s'affiche à l'exécution, la seule chose qui se passe lorsque je fait une injection injection @EJB, c'est que la page du Servlet ne s'affiche pas, elle produit un message d'erreur suivant de Glassfish sans aucune sortie dans le fichier log :
    HTTP Status 404 -
    --------------------------------------------------------------------------------
    type Status report

    message

    description The requested resource () is not available.
    --------------------------------------------------------------------------------
    GlassFish Server Open Source Edition 3.1
    Je sais que Glassfish bloque au niveau de l'injection. Puisque lorsque je commente l'injection, la page s'affiche normalement.

    C'est lors du démarrage que le log affiche le message suisvant :
    GRAVE: Class [ Lhello/service/HelloServiceBean; ] not found. Error while loading [ class controlGestEcole.ServletControl ]
    GRAVE: Class [ Lhello/service/HelloServiceBean; ] not found. Error while loading [ class controlGestEcole.ServletControl ]

  8. #8
    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
    Peux-tu préciser ton packaging complet?

  9. #9
    Membre habitué
    Inscrit en
    Avril 2010
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 342
    Points : 161
    Points
    161
    Par défaut
    J'ai télécharché la version zippée de Glassfish et non la version exé. J'ai intallé le plugin dans Eclipse avec succès et j'a ajouter un Server que je fais pointer sur mon répertoire glassfish3/glassfish dézippé.

  10. #10
    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
    Je parlais du packaging de l'application.

  11. #11
    Membre habitué
    Inscrit en
    Avril 2010
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 342
    Points : 161
    Points
    161
    Par défaut
    Ah Ok.
    1) J'ai un ProjetWeb qui contient :
    - un package appélé controlGestEcole
    - un répertoire appélé WEB-INF\vues dans lequel se trouvent toutes mes pages JSP
    - et la page index.jsp qui est directement sur la racine de WebContent

    2) Ensuite j'ai autre ProjetEJB qui contient :
    - un package hello.service qui contient l'interface Remote HelloService
    et le EJB HelloServiceBean

    J'ai enfin inclu le ProjetEJB dans le ProjetWeb en cliquant avec le bouton droit sur le ProjetWeb--->Prorperties--->Java Build Path--->Onglet Projects --->Add---ProjetEJB

    Merci

  12. #12
    Membre habitué
    Inscrit en
    Avril 2010
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 342
    Points : 161
    Points
    161
    Par défaut
    Ayant poussé un peu plus loin, je me rend compte que :

    1) La méthode JNDI marche avec Jboss mais pas avec Glassfish, mais là n'est pas le problème peut-être je pourrai m'y attardé plus tard.

    2) Le véritable problème est que j'ai essayé de créer un seul projet web dans lequel je crée 2 packages (webPackage, ejbPackage). Lorsque j'exécute la même erreur se produit. Dans le même projet, impossible de faire une injection (que ce soit avec Jboss ou Glassfish la même erreur surgit)

    LE CODE EST LE SUIVANT

    - EJB Interface simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    package ejbPackage;
    import javax.ejb.*;
     
    @Remote
    public interface BeanDesMessages {
    	String display(String nom);
    }
    - Implémentation de l'EJB
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    @Stateless
    public class DisplayMessage {
    	public String display(String msg){
    	    return msg;
    	}
    }
    - La Servlet
    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 webPackage;
     
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.ejb.*;
    import ejbPackage.*;
     
     
    @WebServlet("/CustomerServlet")
    public class CustomerServlet extends HttpServlet {
     
    	private static final long serialVersionUID = 1L;
     
    	@EJB 
    	private BeanDesMessages msg;
     
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		System.out.println(msg.display("Je m'apelle Jean Claude"));
    		request.getRequestDispatcher("index.jsp").forward(request, response);
    	}
     
    }
    3) A l'exécution de la Servlet, Glassfish m'affiche le message suivant :
    type Exception report

    message

    description The server encountered an internal error () that prevented it from fulfilling this request.

    exception

    javax.servlet.ServletException: PWC1392: Error instantiating servlet class webPackage.CustomerServlet

    root cause
    com.sun.enterprise.container.common.spi.util.InjectionException: Error creating managed object for class webPackage.CustomerServlet

    root cause
    com.sun.enterprise.container.common.spi.util.InjectionException: Exception attempting to inject Remote ejb-ref name=webPackage.CustomerServlet/msg,Remote 3.x interface =ejbPackage.BeanDesMessages,ejb-link=null,lookup=,mappedName=,jndi-name=ejbPackage.BeanDesMessages,refType=Session into class webPackage.CustomerServlet

    root cause
    javax.naming.NamingException: Lookup failed for 'java:comp/env/webPackage.CustomerServlet/msg' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NamingException: Exception resolving Ejb for 'Remote ejb-ref name=webPackage.CustomerServlet/msg,Remote 3.x interface =ejbPackage.BeanDesMessages,ejb-link=null,lookup=,mappedName=,jndi-name=ejbPackage.BeanDesMessages,refType=Session' . Actual (possibly internal) Remote JNDI name used for lookup is 'ejbPackage.BeanDesMessages#ejbPackage.BeanDesMessages' [Root exception is javax.naming.NamingException: Lookup failed for 'ejbPackage.BeanDesMessages#ejbPackage.BeanDesMessages' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NameNotFoundException: ejbPackage.BeanDesMessages#ejbPackage.BeanDesMessages not found]]]

    root cause
    javax.naming.NamingException: Exception resolving Ejb for 'Remote ejb-ref name=webPackage.CustomerServlet/msg,Remote 3.x interface =ejbPackage.BeanDesMessages,ejb-link=null,lookup=,mappedName=,jndi-name=ejbPackage.BeanDesMessages,refType=Session' . Actual (possibly internal) Remote JNDI name used for lookup is 'ejbPackage.BeanDesMessages#ejbPackage.BeanDesMessages' [Root exception is javax.naming.NamingException: Lookup failed for 'ejbPackage.BeanDesMessages#ejbPackage.BeanDesMessages' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NameNotFoundException: ejbPackage.BeanDesMessages#ejbPackage.BeanDesMessages not found]]

    root cause
    javax.naming.NamingException: Lookup failed for 'ejbPackage.BeanDesMessages#ejbPackage.BeanDesMessages' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NameNotFoundException: ejbPackage.BeanDesMessages#ejbPackage.BeanDesMessages not found]

    root cause
    javax.naming.NameNotFoundException: ejbPackage.BeanDesMessages#ejbPackage.BeanDesMessages not found
    note The full stack traces of the exception and its root causes are available in the GlassFish Server Open Source Edition 3.1 logs.
    Je voudrais vraiment savoir si après l'installation d'Eclipse J2EE Helios 64 bits, après l'intégration d'un Serveur d'application, l'injection des EJB marche automatiquement sans aucune configuration ?

    Merci.

  13. #13
    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
    Il doit être possible d'avoir du code JNDI portable sur les deux serveurs avec la nouvelle normalisation des noms avec EJB 3.1. Dans GlassFish lors du déploiement d'EJB il y a un message du genre :

    INFO: Portable JNDI names for EJB DisplayMessage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [java:global/MonAppli/DisplayMessage!webPackage.DisplayMessage, java:global/MonAppli/DisplayMessage]
    Quel est ton packaging WAR vs. JAR vs. EAR? Les différents packages différents ne changent vraiment rien, le packaging si.

    Si tu n'as pas vraiment besoin de l'interface distante, tu pourrais simplifier en utilisant la seule classe DisplayMessage et faire une injection en utilisant la classe d'implémentation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @EJB
    private DisplayMessage msg;

  14. #14
    Membre habitué
    Inscrit en
    Avril 2010
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 342
    Points : 161
    Points
    161
    Par défaut
    Je ne comprend pas cette phrase
    Quel est ton packaging WAR vs. JAR vs. EAR? Les différents packages différents ne changent vraiment rien, le packaging si.
    J'ai aussi essayé sans interface, en faisant l'injection directement sur la classe d'implémentation plusieurs fois.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @EJB
    private DisplayMessage msg;
    ça ne marche toujours pas.

    S'il te plait quel sont les étapes que tu suis de ton côté pour que ça marche. De l'installation de l'IDE au déploiement ?

    Merci

  15. #15
    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 tu mets tout dans un WAR et sans interface ça fonctionne très bien.
    Peux-tu partager ton code?

  16. #16
    Membre habitué
    Inscrit en
    Avril 2010
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 342
    Points : 161
    Points
    161
    Par défaut
    Mon code est exactement ce que j'ai détaillé ci-dessus sans changement
    Interface (Facultatif)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    package ejbPackage;
    import javax.ejb.*;
     
    @Remote
    public interface BeanDesMessages {
    	String display(String nom);
    }
    Classe EJB
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    package ejbPackage;
    import javax.ejb.*;
    @Stateless
    public class DisplayMessage implements BeanDesMessages  {
    	public String display(String msg){
    	    return msg;
    	}
    }
    Servlet controleur
    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
    package webPackage;
     
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.ejb.*;
    import ejbPackage.*;
     
     
    @WebServlet("/CustomerServlet")
    public class CustomerServlet extends HttpServlet {
     
    	private static final long serialVersionUID = 1L;
     
    	//@EJB 
    	//private BeanDesMessages msg;
     
           @EJB
           private DisplayMessage msg1;
     
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		System.out.println(msg1.display("Je m'apelle Jean Claude"));
    		request.getRequestDispatcher("index.jsp").forward(request, response);
    	}
     
    }
    Ici j'ai commenter l'injection vers l'interface, je la fait directement sur le l'ejb qui implémente l'interface. J'ai dans ce cas ce message d'erreur.

    INFO: PWC1412: WebModule[null] ServletContext.log()WC1409: Marking servlet webPackage.CustomerServlet as unavailable
    ATTENTION: StandardWrapperValve[webPackage.CustomerServlet]: PWC1382: Allocate exception for servlet webPackage.CustomerServlet
    com.sun.enterprise.container.common.spi.util.InjectionException: Error creating managed object for class webPackage.CustomerServlet
    at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.createManagedObject(InjectionManagerImpl.java:317)
    at com.sun.enterprise.web.WebContainer.createServletInstance(WebContainer.java:702)
    at com.sun.enterprise.web.WebModule.createServletInstance(WebModule.java:1958)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1263)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:1070)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:189)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
    at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:326)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:227)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:170)
    at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822)
    at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719)
    at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1013)
    at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
    at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
    at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
    at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
    at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
    at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
    at java.lang.Thread.run(Thread.java:662)
    Caused by: com.sun.enterprise.container.common.spi.util.InjectionException: Exception attempting to inject Remote ejb-ref name=webPackage.CustomerServlet/msg,Remote 3.x interface =ejbPackage.DisplayMessage,ejb-link=null,lookup=,mappedName=,jndi-name=ejbPackage.DisplayMessage,refType=Session into class webPackage.CustomerServlet
    at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:698)
    at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.inject(InjectionManagerImpl.java:468)
    at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.injectInstance(InjectionManagerImpl.java:146)
    at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.injectInstance(InjectionManagerImpl.java:132)
    at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.createManagedObject(InjectionManagerImpl.java:311)
    ... 28 more
    Caused by: javax.naming.NamingException: Lookup failed for 'java:comp/env/webPackage.CustomerServlet/msg' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NamingException: Exception resolving Ejb for 'Remote ejb-ref name=webPackage.CustomerServlet/msg,Remote 3.x interface =ejbPackage.DisplayMessage,ejb-link=null,lookup=,mappedName=,jndi-name=ejbPackage.DisplayMessage,refType=Session' . Actual (possibly internal) Remote JNDI name used for lookup is 'ejbPackage.DisplayMessage#ejbPackage.DisplayMessage' [Root exception is javax.naming.NamingException: Lookup failed for 'ejbPackage.DisplayMessage#ejbPackage.DisplayMessage' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NameNotFoundException: ejbPackage.DisplayMessage#ejbPackage.DisplayMessage not found]]]
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:518)
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:455)
    at javax.naming.InitialContext.lookup(InitialContext.java:392)
    at javax.naming.InitialContext.lookup(InitialContext.java:392)
    at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:597)
    ... 32 more
    Caused by: javax.naming.NamingException: Exception resolving Ejb for 'Remote ejb-ref name=webPackage.CustomerServlet/msg,Remote 3.x interface =ejbPackage.DisplayMessage,ejb-link=null,lookup=,mappedName=,jndi-name=ejbPackage.DisplayMessage,refType=Session' . Actual (possibly internal) Remote JNDI name used for lookup is 'ejbPackage.DisplayMessage#ejbPackage.DisplayMessage' [Root exception is javax.naming.NamingException: Lookup failed for 'ejbPackage.DisplayMessage#ejbPackage.DisplayMessage' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NameNotFoundException: ejbPackage.DisplayMessage#ejbPackage.DisplayMessage not found]]
    at com.sun.ejb.EjbNamingReferenceManagerImpl.resolveEjbReference(EjbNamingReferenceManagerImpl.java:178)
    at com.sun.enterprise.container.common.impl.ComponentEnvManagerImpl$EjbReferenceProxy.create(ComponentEnvManagerImpl.java:1097)
    at com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.lookup(GlassfishNamingManagerImpl.java:772)
    at com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.lookup(GlassfishNamingManagerImpl.java:740)
    at com.sun.enterprise.naming.impl.JavaURLContext.lookup(JavaURLContext.java:172)
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:498)
    ... 36 more
    Caused by: javax.naming.NamingException: Lookup failed for 'ejbPackage.DisplayMessage#ejbPackage.DisplayMessage' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NameNotFoundException: ejbPackage.DisplayMessage#ejbPackage.DisplayMessage not found]
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:518)
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:455)
    at javax.naming.InitialContext.lookup(InitialContext.java:392)
    at javax.naming.InitialContext.lookup(InitialContext.java:392)
    at com.sun.ejb.EjbNamingReferenceManagerImpl.resolveEjbReference(EjbNamingReferenceManagerImpl.java:173)
    ... 41 more
    Caused by: javax.naming.NameNotFoundException: ejbPackage.DisplayMessage#ejbPackage.DisplayMessage not found
    at com.sun.enterprise.naming.impl.TransientContext.doLookup(TransientContext.java:248)
    at com.sun.enterprise.naming.impl.TransientContext.lookup(TransientContext.java:215)
    at com.sun.enterprise.naming.impl.SerialContextProviderImpl.lookup(SerialContextProviderImpl.java:77)
    at com.sun.enterprise.naming.impl.LocalSerialContextProviderImpl.lookup(LocalSerialContextProviderImpl.java:119)
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:505)
    ... 45 more
    Merci

  17. #17
    Membre habitué
    Inscrit en
    Avril 2010
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 342
    Points : 161
    Points
    161
    Par défaut
    Ok, là, ça marche quant tous est dan le même projet. Je vais faire un post différent sur l'appel des objet d'un projet externe

  18. #18
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Quels sont les paramètres JNDI pour pour sun application server ?
    moi Je cherche les paramètres JNDI pour le serveur Sun Java Systems Application (J2EE_SDK)

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

Discussions similaires

  1. Quels sont les meilleurs livres pour UML ?
    Par Matthieu Brucher dans le forum Livres
    Réponses: 33
    Dernier message: 31/01/2014, 10h36
  2. Quels sont les outils nécessaires pour créer une plate-forme ?
    Par overon dans le forum Langages de programmation
    Réponses: 12
    Dernier message: 27/03/2007, 19h10
  3. Réponses: 5
    Dernier message: 12/01/2007, 11h32
  4. Quels sont les paramètres de read ?
    Par Michaël dans le forum C
    Réponses: 4
    Dernier message: 19/12/2005, 13h56

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