Identificarte

Versión Completa : JAVA Ayuda con aplicacion cliente de que utliza en ejb en un servidor remoto en netbeans


alex02
julio 22, 2011, 09:37 AM
Saludos

Estoy intentando aprender J2EE con netbeans 6.9 y glassfish 3 hice una aplicación en swing que utiliza un ejb que esta en un servidor remoto cuando lo ejecuto desde netbeans el programa me funciona bien pero cuando lo intento ejecutar desde afuera de netbeans con el comando "java -jar miaplicacion.jar" me sale el siguiente error:

javax.naming.NoInitialContextException: Cannot instantiate class: com.sun.enterprise.naming.impl.SerialInitContextFa ctory [Root exception is java.lang.ClassNotFoundException: com.sun.enterprise.naming.impl.SerialInitContextFa ctory]
at javax.naming.spi.NamingManager.getInitialContext(N amingManager.java:674)
at javax.naming.InitialContext.getDefaultInitCtx(Init ialContext.java:305)
at javax.naming.InitialContext.init(InitialContext.ja va:240)
at javax.naming.InitialContext.<init>(InitialContext.java:214)
at pruebaejbr.Main.main(Main.java:34)
Caused by: java.lang.ClassNotFoundException: com.sun.enterprise.naming.impl.SerialInitContextFa ctory
at java.net.URLClassLoader$1.run(URLClassLoader.java: 217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.j ava:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:3 21)
at sun.misc.Launcher$AppClassLoader.loadClass(Launche r.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:2 66)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at com.sun.naming.internal.VersionHelper12.loadClass( VersionHelper12.java:63)
at javax.naming.spi.NamingManager.getInitialContext(N amingManager.java:671)
... 4 more
Exception in thread "main" java.lang.NullPointerException
at pruebaejbr.Main.main(Main.java:39)


es raro por que solo funciona desde netbeans y no fuera de el???

le agredeceria que me ayudaran con esto por favor.

.

wac666
julio 22, 2011, 09:50 AM
Son librerias, tienes que ponerle classpath con la ubicacion de las librerias.

En el caso del error te esta pidiendo com.sun.enterprise.naming.impl.SerialInitContextFa ctory

Caused by: java.lang.ClassNotFoundException: com.sun.enterprise.naming.impl.SerialInitContextFa ctory


Saludos

alex02
julio 22, 2011, 10:08 AM
Ya agregue las librerías que tenia que agregar pero igual sigue apareciendo el error he seguido infinidad de manuales pero todos con el mismo resultado, por que solo funciona en netbeans???

wac666
julio 22, 2011, 10:28 AM
Con que comando agragaste las librerias????


Muestrame el comando que estas ejecutanto.

Si sigues ejecutando "java -jar miaplicacion.jar"

Ese es el problema, le faltan parametros, que agregen librerias.

Verifica bien. Saludos

alex02
julio 22, 2011, 10:32 AM
Las agrego directamente en el netbeans aunque creo que encontre el problema estoy haciendo unas pruebas y si lo encuentro lo publico

wac666
julio 22, 2011, 10:53 AM
no. eso no es.

Tienes que ejecutar con el parametro cp o classpath, revisa en un libro. La idea es ponerle la ruta de las librerias.

Seria algo como:

java -cp /librerias/jar1.jar:/librerias/jar2.jar -jar miaplicacion


Revisa bien la sintaxis del comando.

Saludos
Las agrego directamente en el netbeans aunque creo que encontre el problema estoy haciendo unas pruebas y si lo encuentro lo publico

alex02
julio 22, 2011, 01:33 PM
Es que cuando agregas las librerías en el proyecto de netbeans el las incluye en el MANIFEST.MF ahorrándome tener que colocar las librerías en el comando ya me funciona pero tuve que agregar todas las librerías del glassfish ahora estoy sacando las librerías que no se necesitan pero son muchas.

wac666
julio 22, 2011, 02:06 PM
si señor!!!!!!!

alex02
julio 22, 2011, 04:06 PM
Listo parece que lo logre, el problema esta que en casi todos los tutoriales que he encontrado en internet dicen que se deben agregar 2 o 3 librerías pero eso no es así, aquí les paso la lista completa de librerías que deben agregar al proyecto para que les funcione la aplicación fuera de netbeans, todas las librerías están en el directorio modules dentro del directorio de glassfish:

../glassfish-3.0.1/glassfish/modules/container-common.jar
../glassfish-3.0.1/glassfish/modules/auto-depends.jar
../glassfish-3.0.1/glassfish/modules/common-util.jar
../glassfish-3.0.1/glassfish/modules/config-types.jar
../glassfish-3.0.1/glassfish/modules/config.jar
../glassfish-3.0.1/glassfish/modules/config-api.jar
../glassfish-3.0.1/glassfish/modules/connectors-internal-api.jar
../glassfish-3.0.1/glassfish/modules/deployment-common.jar
../glassfish-3.0.1/glassfish/modules/dol.jar
../glassfish-3.0.1/glassfish/modules/ejb.security.jar
../glassfish-3.0.1/glassfish/modules/ejb-container.jar
../glassfish-3.0.1/glassfish/modules/ejb-internal-api.jar
../glassfish-3.0.1/glassfish/modules/gf-client.jar
../glassfish-3.0.1/glassfish/modules/glassfish-api.jar
../glassfish-3.0.1/glassfish/modules/glassfish-corba-codegen.jar
../glassfish-3.0.1/glassfish/modules/glassfish-corba-csiv2-idl.jar
../glassfish-3.0.1/glassfish/modules/glassfish-corba-newtimer.jar
../glassfish-3.0.1/glassfish/modules/glassfish-corba-omgapi.jar
../glassfish-3.0.1/glassfish/modules/glassfish-corba-orb.jar
../glassfish-3.0.1/glassfish/modules/glassfish-corba-orbgeneric.jar
../glassfish-3.0.1/glassfish/modules/glassfish-corba-asm.jar
../glassfish-3.0.1/glassfish/modules/glassfish-naming.jar
../glassfish-3.0.1/glassfish/modules/gmbal.jar
../glassfish-3.0.1/glassfish/modules/hk2-core.jar
../glassfish-3.0.1/glassfish/modules/hk2.jar
../glassfish-3.0.1/glassfish/modules/internal-api.jar
../glassfish-3.0.1/glassfish/modules/javax.transaction.jar
../glassfish-3.0.1/glassfish/modules/javax.resource.jar
../glassfish-3.0.1/glassfish/modules/javax.servlet.jar
../glassfish-3.0.1/glassfish/modules/javax.ejb.jar
../glassfish-3.0.1/glassfish/modules/jta.jar
../glassfish-3.0.1/glassfish/modules/kernel-l10n.jar
../glassfish-3.0.1/glassfish/modules/kernel.jar
../glassfish-3.0.1/glassfish/modules/mimepull.jar
../glassfish-3.0.1/glassfish/modules/management-api.jar
../glassfish-3.0.1/glassfish/modules/orb-iiop.jar
../glassfish-3.0.1/glassfish/modules/orb-connector.jar
../glassfish-3.0.1/glassfish/modules/orb-enabler.jar
../glassfish-3.0.1/glassfish/modules/security.jar
../glassfish/modules/tiger-types-osgi.jar
../glassfish/modules/transaction-internal-api.jar

después de agregar estas librerias y generar el archivo jar ya lo podemos ejecutar con el comando java -jar miaplicacion.jar y listo.

x78527
julio 25, 2011, 10:40 PM
Considera usar JWS (Java Web Start) o una aplicación cliente Java EE es lo mas elegante y adecuado.

alex02
agosto 11, 2011, 04:28 PM
Gracias x78527 (http://www.laneros.com/member.php?u=412305) lo tendré en cuenta.

Jack Krauser
febrero 2, 2012, 11:24 AM
Hola, alex02 o quien pueda ayudarme, como hiciste para determinar cuales son los JNDI que deben estar en la aplicacion cliente???? solo eso me falta, estoy en la misma situacion que tu, mi programa ya funciona correctamente en glassfish v2.1 y ahora quiero migrar a glassfish 3, pero ese es el unico problema que tengo (JNDI)... Por favot, ayudame con eso.... Gracias