2011-03-30 20 views
6

Estoy intentando conectarme al servicio JMS de GlassFish 3 desde un cliente remoto independiente. Sin embargo, estoy obteniendo una java.lang.ClassNotFoundException: com.sun.messaging.jms.ra.ResourceAdapter. ¿Alguna idea sobre cómo solucionar este problema?Conexión de un cliente JMS remoto a GlassFish 3

Aquí está mi configuración hasta ahora:

  • Glassfish 3 JMS servicio en modo LOCAL (estoy asumiendo que el modo EMBEDED no funcionará en este caso, ya que no pasa por la pila de red)

  • JNDI propiedades se especifican como sigue:

    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

  • gf-client-module.jar (en GLASSFISH_HOME/módulos) que se añade a la ruta de clase de la aplicación independiente. También intenté agregar otros archivos jar presentes en el directorio de módulos (como jms-core.jar), pero obteniendo la misma ClassNotFoundException.

Cualquier ayuda sería muy apreciada.

Respuesta

2

Ok. Encontré una solución. Ver here para más detalles, pero la respuesta corta es que necesitaba agregar dos jar a classpath: imqjmsra.jar e imqbroker.jar. Estos estaban disponibles dentro de un rar llamado imqjmsra.rar que se puede encontrar en el directorio mq de glassfish. ¡Tuve que extraer los dos frascos de este rar!

1

Esta es la lista completa de tarros de cliente para GlassFish 3:

auto-depends.jar 
deployment-common.jar 
glassfish-corba-internal-api.jar  
internal-api.jar 
management-api.jar 
bean-validator.jar 
dol.jar 
glassfish-corba-newtimer.jar   
javax.ejb.jar 
orb-connector.jar 
common-util.jar 
ejb-container.jar 
glassfish-corba-omgapi.jar  
javax.jms.jar 
orb-iiop.jar 
config-api.jar 
ejb.security.jar 
glassfish-corba-orb.jar 
javax.resource.jar 
security.jar 
config-types.jar 
glassfish-api.jar 
glassfish-corba-orbgeneric.jar  
javax.servlet.jar 
ssl-impl.jar 
config.jar 
glassfish-corba-asm.jar 
glassfish-naming.jar 
javax.transaction.jar 
transaction-internal-api.jar 
connectors-internal-api.jar  
glassfish-corba-codegen.jar  
gmbal.jar 
jta.jar 
container-common.jar 
glassfish-corba-csiv2-idl.jar  
hk2-core.jar 
kernel.jar 
3

En lugar de utilizar todos los archivos JAR Glassfish individuales que pueda necesitar (como GF-cliente-module.jar, imqjmsra. jar e imqbroker.jar), el método preferido es usar el archivo gf-client.jar. Se puede encontrar en $ GLASSFISH_HOME/lib.

Hay más información en http://glassfish.java.net/javaee5/ejb/EJB_FAQ.html#StandaloneRemoteEJB. Ese documento se refiere al uso de EJB en clientes independientes, pero la solución es la misma para usar JMS.

0

Como se menciona en las notas del Ivan Un Krizsán para la certificación de EJB, y dependiendo de la versión de Glassfish, esto debería ser suficiente:

  • GlassFish 3 (y GlassFish 4 también, acabo de probado) : $ GLASSFISH_HOME/lib/gf-client.jar
  • GlassFish 2: $ GLASSFISH_HOME/lib/AppServ-rt.jar y $ APS_HOME/lib/javaee.jar
Cuestiones relacionadas