EJB3 Glassfish recherche JNDI
Je suis à l'aide de Glassfish-livré IDE Eclipse. J'ai écrit une simple application EJB. mais ça ne fonctionne pas.
@Stateless
@Remote(CalculatorRemote.class)
@Local(CalculatorLocal.class)
public class Calculator implements CalculatorRemote, CalculatorLocal {
@Override
public String sayHello(String name) {
System.out.println("ejb:"+name);
return null;
}
}
----
@Remote
public interface CalculatorRemote {
public String sayHello(String name);
}
-------
@Local
public interface CalculatorLocal {
public String sayHello(String name);
}
J'ai écrit un client autonome pour tester, mais a échoué. ne pouvez pas trouver JNDI.
public class Main {
public static void main(String[] args) throws Exception {
InitialContext ctx = new InitialContext();
CalculatorRemote bean = (CalculatorRemote) ctx.lookup("java:global/TestEAR/TEjb/Calculator!com.CalculatorRemote");
bean.sayHello("Billy Bob");
}
}
Dans le journal du serveur, il dit
INFO: Portable JNDI names for EJB Calculator : [java:global/TestEAR/TEjb/Calculator!com.CalculatorRemote, java:global/TestEAR/TEjb/Calculator!com.CalculatorLocal]
INFO: Glassfish-specific (Non-portable) JNDI names for EJB Calculator : [com.CalculatorRemote, com.CalculatorRemote#com.CalculatorRemote]
J'ai également essayé de
ctx.lookup("com.CalculatorRemote")
ne fonctionne toujours pas.
message d'erreur est
java.lang.NullPointerException
at com.sun.enterprise.naming.impl.SerialContext.getRemoteProvider(SerialContext.java:297)
at com.sun.enterprise.naming.impl.SerialContext.getProvider(SerialContext.java:271)
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:430)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at com.Main.main(Main.java:9)
Exception in thread "main" javax.naming.NamingException: Lookup failed for 'java:global/TestEAR/TEjb/Calculator!com.CalculatorRemote' in SerialContext [Root exception is javax.naming.NamingException: Unable to acquire SerialContextProvider for SerialContext [Root exception is java.lang.NullPointerException]]
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:442)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at com.Main.main(Main.java:9)
Caused by: javax.naming.NamingException: Unable to acquire SerialContextProvider for SerialContext [Root exception is java.lang.NullPointerException]
at com.sun.enterprise.naming.impl.SerialContext.getProvider(SerialContext.java:276)
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:430)
... 2 more
Caused by: java.lang.NullPointerException
at com.sun.enterprise.naming.impl.SerialContext.getRemoteProvider(SerialContext.java:297)
at com.sun.enterprise.naming.impl.SerialContext.getProvider(SerialContext.java:271)
... 3 more
S'il vous plaît aider moi.
OriginalL'auteur user534009 | 2011-04-18
Vous devez vous connecter pour publier un commentaire.
Vous pouvez ajouter les lignes ci-dessus:
J'ai créé un blog ici, à l'aide de EJB3x avec Glassfish v3.
http://anirbanchowdhury.wordpress.com/2012/06/07/ejb-3-application-in-glassfish-3x/
OriginalL'auteur Achow
Je pense que l'exception est levée, car vous n'avez pas configuré le contexte initial correctement. Soit créer un jndi.fichier de propriétés, ou de créer une table de hachage avec les propriétés et l'envoyer au constructeur de IntialContext.
La création d'EJB3 à l'aide de Netbeans et Glassfish
OriginalL'auteur blackcompe
Juste aujourd'hui j'ai eu un problème avec cela.
Votre client autonome échoué, mais il va travailler à l'intérieur de GF conteneur d'EJB.
Pour le client de test vous avez besoin de 2 choses à faire fonctionner:
Ces jarres ont besoin d'être dans votre classpath. C'est idiot mais je ne sais pas encore le minimum des pots de 2) pour le faire fonctionner.
OriginalL'auteur Liviu
Solution est comme ci-dessous.
Dans le code ci-dessous, Vous devez appeler un bean dans une autre JVM Droit ? Pour ex, votre classe principale
est dans la JRE et le HARICOT est dans Glassfish JVM.
Le code est partiellement droit. Mais plus codé est nécessaire pour votre classe..
Passer par ce lien, exemple complet, vous pouvez suivre.
OriginalL'auteur nihar m.