我正在尝试从独立的远程客户端连接到GlassFish 3的JMS服务。但是我得到了一个java.lang.ClassNotFoundException:com.sun.messaging.jms.ra.ResourceAdapter。关于如何解决这个问题的任何想法?
到目前为止,这是我的设置:
在本地模式下的Glassfish 3 JMS服务(我假设EMBEDED模式在这种情况下不起作用,因为它绕过了网络堆栈)
JNDI属性指定如下:
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(在GLASSFISH_HOME / modules中)添加到独立应用程序的类路径中。还尝试添加模块目录中存在的其他jar(例如jms-core.jar),但仍然得到相同的ClassNotFoundException。
非常感谢任何帮助。
答案 0 :(得分:3)
不使用您可能需要的所有单独的Glassfish jar文件(例如gf-client-module.jar,imqjmsra.jar和imqbroker.jar),首选方法是使用gf-client.jar文件。它可以在$ GLASSFISH_HOME / lib。
找到http://glassfish.java.net/javaee5/ejb/EJB_FAQ.html#StandaloneRemoteEJB有更多信息。该文档适用于在独立客户端中使用EJB,但使用JMS的解决方案是相同的。
答案 1 :(得分:2)
确定。我找到了解决方案。有关详细信息,请参阅here,但简短的回答是我需要在类路径中添加两个jar:imqjmsra.jar和imqbroker.jar。这些可以在名为imqjmsra.rar的rar中找到,可以在glassfish的mq目录下找到。我不得不从这个rar中提取出两个罐子!
答案 2 :(得分:1)
这是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 :(得分:0)
正如Ivan A Krizsan关于EJB认证的说明中提到的,并且取决于Glassfish版本,这应该足够了: