Précédent   Forum des professionnels en informatique > Java > Serveurs, conteneurs, et Java EE > GlassFish
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 21/11/2007, 17h33   #1
Membre éprouvé
 
Inscription : juillet 2007
Messages : 682
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 682
Points : 496
Points : 496
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 :
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 ?
verbose est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2007, 22h48   #2
Membre Expert

 
Avatar de alexismp
 
Alexis Moussine-Pouchkine
Inscription : janvier 2005
Messages : 1 498
Détails du profil
Informations personnelles :
Nom : Alexis Moussine-Pouchkine

Informations forums :
Inscription : janvier 2005
Messages : 1 498
Points : 1 719
Points : 1 719
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 :
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
__________________
http://blogs.sun.com/alexismp
alexismp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2007, 16h55   #3
Membre éprouvé
 
Inscription : juillet 2007
Messages : 682
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 682
Points : 496
Points : 496
Merci pour l'info
verbose est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2010, 10h58   #4
Invité régulier
 
Inscription : janvier 2009
Messages : 11
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 11
Points : 9
Points : 9
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.
zahenianis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 01h46   #5
Membre régulier
 
Inscription : avril 2010
Messages : 262
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 262
Points : 85
Points : 85
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
Citation:
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
Citation:
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 :
Citation:
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.
mesken est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 12h10   #6
Membre Expert

 
Avatar de alexismp
 
Alexis Moussine-Pouchkine
Inscription : janvier 2005
Messages : 1 498
Détails du profil
Informations personnelles :
Nom : Alexis Moussine-Pouchkine

Informations forums :
Inscription : janvier 2005
Messages : 1 498
Points : 1 719
Points : 1 719
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?
__________________
http://blogs.sun.com/alexismp
alexismp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 22h20   #7
Membre régulier
 
Inscription : avril 2010
Messages : 262
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 262
Points : 85
Points : 85
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 :
Citation:
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 :
Citation:
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 ]

Dernière modification par mesken ; 21/03/2011 à 23h49.
mesken est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2011, 09h39   #8
Membre Expert

 
Avatar de alexismp
 
Alexis Moussine-Pouchkine
Inscription : janvier 2005
Messages : 1 498
Détails du profil
Informations personnelles :
Nom : Alexis Moussine-Pouchkine

Informations forums :
Inscription : janvier 2005
Messages : 1 498
Points : 1 719
Points : 1 719
Peux-tu préciser ton packaging complet?
__________________
http://blogs.sun.com/alexismp
alexismp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2011, 16h54   #9
Membre régulier
 
Inscription : avril 2010
Messages : 262
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 262
Points : 85
Points : 85
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é.
mesken est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2011, 16h59   #10
Membre Expert

 
Avatar de alexismp
 
Alexis Moussine-Pouchkine
Inscription : janvier 2005
Messages : 1 498
Détails du profil
Informations personnelles :
Nom : Alexis Moussine-Pouchkine

Informations forums :
Inscription : janvier 2005
Messages : 1 498
Points : 1 719
Points : 1 719
Je parlais du packaging de l'application.
__________________
http://blogs.sun.com/alexismp
alexismp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2011, 18h45   #11
Membre régulier
 
Inscription : avril 2010
Messages : 262
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 262
Points : 85
Points : 85
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

Dernière modification par mesken ; 22/03/2011 à 21h44.
mesken est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 01h14   #12
Membre régulier
 
Inscription : avril 2010
Messages : 262
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 262
Points : 85
Points : 85
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 :
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 :
1
2
3
4
5
6
7
8
 
 
@Stateless
public class DisplayMessage {
	public String display(String msg){
	    return msg;
	}
}
- La Servlet
Code :
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 :
Citation:
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.

Dernière modification par mesken ; 24/03/2011 à 01h30.
mesken est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2011, 16h00   #13
Membre Expert

 
Avatar de alexismp
 
Alexis Moussine-Pouchkine
Inscription : janvier 2005
Messages : 1 498
Détails du profil
Informations personnelles :
Nom : Alexis Moussine-Pouchkine

Informations forums :
Inscription : janvier 2005
Messages : 1 498
Points : 1 719
Points : 1 719
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 :
[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 :
1
2
@EJB
private DisplayMessage msg;
__________________
http://blogs.sun.com/alexismp
alexismp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2011, 16h34   #14
Membre régulier
 
Inscription : avril 2010
Messages : 262
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 262
Points : 85
Points : 85
Je ne comprend pas cette phrase
Citation:
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 :
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
mesken est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2011, 16h39   #15
Membre Expert

 
Avatar de alexismp
 
Alexis Moussine-Pouchkine
Inscription : janvier 2005
Messages : 1 498
Détails du profil
Informations personnelles :
Nom : Alexis Moussine-Pouchkine

Informations forums :
Inscription : janvier 2005
Messages : 1 498
Points : 1 719
Points : 1 719
Si tu mets tout dans un WAR et sans interface ça fonctionne très bien.
Peux-tu partager ton code?
__________________
http://blogs.sun.com/alexismp
alexismp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2011, 21h25   #16
Membre régulier
 
Inscription : avril 2010
Messages : 262
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 262
Points : 85
Points : 85
Mon code est exactement ce que j'ai détaillé ci-dessus sans changement
Interface (Facultatif)
Code :
1
2
3
4
5
6
7
package ejbPackage;
import javax.ejb.*;
 
@Remote
public interface BeanDesMessages {
	String display(String nom);
}
Classe EJB
Code :
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 :
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.

Citation:
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
mesken est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/03/2011, 18h01   #17
Membre régulier
 
Inscription : avril 2010
Messages : 262
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 262
Points : 85
Points : 85
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

Dernière modification par mesken ; 27/03/2011 à 20h24.
mesken est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 10h58.


 
 
 
 
Partenaires

Hébergement Web