我有一场在EAP 6.4.x下工作得很好的战争(x现在是8,但是在6和4之下,依此类推到6.4.0)。
WAR具有一些简单的JMS客户端功能,可以将消息添加到远程计算机上的队列中。目标QBroker是ActiveMQ 5.8.0。
我使用5.8.0 RAR设置到远程代理的适配器/连接器,然后只是普通的JMS客户端东西将消息推送到q。一切都很好。
开始"端口"从6.4.x到7.0.1;我挂了amq 5.8.0 RAR的东西。对于初学者 - 不会使用任何属于EAP 7(尚未)的AMQ Artemis内容。最初我想让我的WAR工作在7.0以下,尽可能少的更改 - 所以留下RAR很重要。
在6.4.x下,我使用独立配置文件,只需通过CLI部署RAR,如下所示:
./jboss-cli.sh --connect -c "deploy --name=${AMQ_DEPLOY_NAME} --runtime-name=${AMQ_RAR_FNAME} ${_TMPDIR}/${AMQ_RAR_FNAME}"
然后我使用cli为队列设置资源适配器,连接def / factory和admin-object。
使用EAP 7.0.1执行相同的过程,如果我使用独立配置文件,我会
java.lang.NoClassDefFoundError: javax/jms/JMSException
尝试启用使用RAR的WAR时出现问题。好的,当我使用standalone-full时,我得到了这种错误的各种变体:
2016-07-18 15:48:10,867 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("add") failed - address: ([
("subsystem" => "messaging-activemq"),
("server" => "default")
]) - failure description: {
"WFLYCTL0180: Services with missing/unavailable dependencies" => ["jboss.messaging-activemq.default is missing [jboss.http-upgrade-registry.default]"],
"WFLYCTL0288: One or more services were unable to start due to one or more indirect dependencies not being available." => {
"Services that were unable to start:" => ["jboss.messaging-activemq.default.jms.manager"],
"Services that may be the cause:" => [
"jboss.http-upgrade-registry.default",
"jboss.naming.context.java.JmsXA"
]
}
}
以上消息表明messaging-activemq内容(或内置的artemis内容)存在问题。
在这两种情况下,我都将EJB默认资源适配器设置为上面创建的RAR。
那么我在这个设置中缺少什么?
关于我的环境的一些细节:
战争中没有任何jboss / wildfly特定的DD。
我没有将AMQ RAR部署为静态模块(我也不想) - 它只是我部署的jar - 就像其他JAR(用于DB驱动程序)或WARS,EJB jars等一样。 / p>
cat version.txt 红帽JBoss企业应用程序平台 - 版本7.0.1.GA
java -version java版" 1.8.0_92" Java(TM)SE运行时环境(版本1.8.0_92-b14) Java HotSpot(TM)64位服务器VM(版本25.92-b14,混合模式)
uname -a Linux wellandf3 4.6.4-301.fc24.x86_64#1 SMP Tue 7月12日11:50:00 UTC 2016 x86_64 x86_64 x86_64 GNU / Linux
答案 0 :(得分:0)
这是由ClassNotFoundException引起的NoClassDefFoundError吗?如果是这样的话,我会尝试将javax.jms.api添加为全局模块。