我试图让一个应用程序在JBoss集群上工作。 它在内部使用队列,开发人员声称它应该在集群环境中正常工作。 我把jbossmq设置为集群上的一个ha-singleton。 应用程序可以正确运行在当前正在运行队列的任何节点上,但在其他节点上运行失败:“javax.naming.NameNotFoundException:QueueConnectionFactory not bound”错误。 我可以从jmx控制台查看JNDIview,看到QueueConnectionFactory类确实只出现在全局上下文中的主节点上。 有没有办法看到集群的JNDI列表,而不是每个服务器?
我从默认的Jboss 4.2.3.GA安装中采取的步骤是使用“all”configuration。 然后删除/server/all/deploy/hsqldb-ds.xml和/deploy-hasingleton/jms/hsqldb-jdbc2-service.xml,将示例/ jms / mysq-jdbc2-service.xml文件复制到它的位置(编辑文件使用DefaultDS而不是MySqlDS)。 最后,我在部署目录中创build了一个mysql-ds.xml文件,在一个空的数据库中指向“DefaultDS”。 我使用队列定义在部署目录中创build了一个-services.xml文件。 如下所示:
<server> <mbean code="org.jboss.mq.server.jmx.Queue" name="jboss.mq.destination:service=Queue,name=myfirstqueue"> <depends optional-attribute-name="DestinationManager"> jboss.mq:service=DestinationManager </depends> </mbean> </server>
所有其他集群function的工作,服务器在视图中相互列出,会话来回复制。 JBoss的文档在这方面有些轻微,还有另外一些我可能错过的设置? 或者,这可能是一个代码问题(是否有不同的代码在一个修复的环境中进行JNDI查找?)
谢谢
问题出在代码上。 @resource语法显然不符合群集。 开发人员尝试了另一种方法,它能正常工作。