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