将远程 JMS 客户端连接到 GlassFish 3
Posted
技术标签:
【中文标题】将远程 JMS 客户端连接到 GlassFish 3【英文标题】:Connecting a remote JMS client to GlassFish 3 【发布时间】:2011-07-26 06:51:27 【问题描述】:我正在尝试从独立的远程客户端连接到 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。
任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:好的。我找到了解决方案。有关详细信息,请参阅here,但简短的回答是我需要在类路径中添加两个 jar:imqjmsra.jar 和 imqbroker.jar。这些可以在名为 imqjmsra.rar 的 rar 中找到,可以在 glassfish 的 mq 目录下找到。我不得不从这个 rar 中提取两个罐子!
【讨论】:
此答案的链接断开。【参考方案2】:这是 glassfish 3 客户端 jar 的完整列表:
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】:不要使用您可能需要的所有单个 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 的解决方案是相同的。
【讨论】:
【参考方案4】:正如 Ivan A Krizsan 的 EJB 认证说明中所述,根据 Glassfish 版本,这应该足够了:
GlassFish 3(还有 GlassFish 4,我刚刚测试过):$GLASSFISH_HOME/lib/gf-client.jar GlassFish 2:$GLASSFISH_HOME/lib/appserv-rt.jar 和 $APS_HOME/lib/javaee.jar【讨论】:
以上是关于将远程 JMS 客户端连接到 GlassFish 3的主要内容,如果未能解决你的问题,请参考以下文章
将 Java 客户端 (JMS) 连接到 IBM MQ 时出现问题
尝试远程连接到 Websphere 上的 JMS 队列时出现 sun/io/MalformedInputException