Configuration JNDI pour Glassfish 3.1.2 pour un client autonome?
J'essaie de me connecter à partir d'un seul swing client (en cours d'exécution dans une autre JVM sur la machine du client) pour le serveur Glassfish.
Actuellement, je utiliser les paramètres suivants à partir de Netbeans et tout fonctionne bien:
System.setProperty("java.naming.factory.initial", "com.sun.enterprise.naming.SerialInitContextFactory");
System.setProperty("java.naming.factory.url.pkgs", "com.sun.enterprise.naming");
System.setProperty("java.naming.factory.state", "com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl");
System.setProperty("org.omg.CORBA.ORBInitialHost", "192.168.1.3");
System.setProperty("org.omg.CORBA.ORBInitialPort", "3700");
InitialContext context = new InitialContext();
Mais quand j'essaie de lancer la compilation du client à partir de la console en tapant la commande "java-jar client.jar" j'obtiens l'erreur suivante:
D:\workspace\gf-client\dist>java -jar gf-client.jar
17.08.2012 11:07:38 ch.client.core.ServerContext getInitialContext SCHWERWIEGEND: Cannot instantiate class: com.sun.enterprise.naming.SerialInitContextFactory javax.naming.NoInitialContextException: Cannot instantiate class: com.sun.enterprise.naming.SerialInitContextFactory [Root exception is java.lang.ClassNotFoundException: com.sun.enterprise.naming.SerialInitContextFactory]
at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.init(Unknown Source)
at javax.naming.InitialContext.<init>(Unknown Source)
at ch.lawsuite.core.ServerContext.getInitialContext(ServerContext.java:2 7)
at ch.client.core.remote.Facades.initialize(Facades.java:68)
at ch.client.core.Client.main(Client.java:57) Caused by: java.lang.ClassNotFoundException: com.sun.enterprise.naming.SerialIni tContextFactory
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.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at com.sun.naming.internal.VersionHelper12.loadClass(Unknown Source)
... 7 more Exception in thread "main" java.lang.NullPointerException
at ch.client.core.remote.Facades.initialize(Facades.java:69)
at ch.client.core.Client.main(Client.java:57)
Quelqu'un a une quelconque idée utile?
- La JVM manquer les libs? Lesquels? (il travaille à partir de netbeans et de tous les dépendants libs sont emballés à la compilation des jar-file (au moins je pense que oui..))
- Existe t il d'autres série contexte usines pour Glassfish ?
Merci beaucoup pour votre aide à l'avance!
- Peut-être cela peut vous aider: stackoverflow.com/questions/7804357/...
- Je courrais avec appclient de glassfish, et, si nécessaire, de faire un script pour le lancer.
Vous devez vous connecter pour publier un commentaire.
Un point au clair à propos de la Télécommande EJB interfaces
Vous voulez une Distance d'interface d'EJB lorsque votre application client vit sur un JVM différent de celui qui héberge le module EJB. En d'autres termes:
OU
Par souci de simplicité
Permet de considérer le premier scénario où à la fois de l'application cliente et le module EJB en direct sur différentes machines virtuelles java sur la même machine.
Un truc important sur le client
Selon les documents, java autonomes les clients doivent utiliser explicitement le nom JNDI global pour la recherche de la Télécommande EJB. Aussi, Glassfish n'a pas besoin de toutes les propriétés instialization d'invoquer la InitialContext() constructeur. Ainsi, l'application cliente peut invoquer l'EJB en utilisant le code suivant:
Dans le cas où votre SE stand alone application cliente est une maven un, alors vous devez
Compte pour l'étape ci-dessus (3) par l'ajout de cette entrée de votre application client POM:
Compte pour l'étape ci-dessus (4) par une POM dépendance pointant vers vous remote_interface.jar dans votre local maven repo en supposant que vous l'avez installé. Suivez ce pour savoir comment faire.
D'autre documentation de référence est ici
Par la recherche dans le MANIFESTE.MF fichier de l'gf-client.jar bibliothèque, j'ai remarqué qu'il y a une douzaine d'autres jar-libs référencé à partir de là. Pour exécuter la commande du client, en dehors de la plateforme netbeans, j'ai dû copier tous ces libs pour la version final de mon propre application. Ensuite, il fonctionne très bien... 🙂
Il vous manque le pot contenant la classe com.soleil.de l'entreprise.de nommage.SerialInitialContextFactory dans votre classpath. Ajouter au manifeste de votre client jar.