我们正在从JBoss EAP 6.4迁移到JBoss EAP 7.0。我们之前的JMS配置无法与JBoss 7.0一起使用,在JBoss 7.0中它为我的JMS Bean抛出NameNotFoundException
我的jms.xml
<beans profile="jboss">
<bean id="connectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:jboss/jms/exampleApp/ConnectionFactory" />
<property name="resourceRef" value="true" />
</bean>
<bean id="SampleQueueIn" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:jboss/jms/exampleApp/SampleQueueIn" />
<property name="resourceRef" value="true" />
</bean>
</beans>
我的messageListener.xml
<beans profile="jboss">
<!-- Abstract MessageListener -->
<bean id="messageListener" abstract="true" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="connectionFactory" />
<property name="transactionManager" ref="transactionManager" />
<property name="sessionTransacted" value="true" />
<!-- Receive timeout determines the duration of JMS session. Increase from default 1sec to 5sec, to lower the traffic to Queue managers -->
<property name="receiveTimeout" value="5000" />
</bean>
</beans>
我的具有侦听器bean的代理域componentContext.xml
<beans profile="jboss">
<bean id="jmsContainer" parent="messageListener">
<property name="destination" ref="SampleQueueIn" />
<property name="messageListener" ref="sampleInformationListenerImpl" />
</bean>
</beans>
用于添加wmq的管理对象的commands.cli部分
/subsystem=resource-adapters/resource-adapter=${wmq_deploy_name}:activate
/subsystem=resource-adapters/resource-adapter=${wmq_deploy_name}/admin-objects=SampleQueueIn:add(class-name=com.ibm.mq.connector.outbound.MQQueueProxy,jndi-name=java:jboss/jms/exampleApp/SampleQueueIn)
/subsystem=resource-adapters/resource-adapter=${wmq_deploy_name}/admin-objects=SampleQueueIn/config-properties=baseQueueName/:add(value=${filter_jms_queue_config_SampleQueueIn_basequeuename})
/subsystem=resource-adapters/resource-adapter=${wmq_deploy_name}/admin-objects=SampleQueueIn/config-properties=baseQueueManagerName/:add(value=${filter_jms_queue_config_basequeuemanager})
我也可以在具有正确jndi-name的子资源下的wmq的JBoss中看到我的管理对象。
我正在使用IBM wmq v9.1.0.2。
[编辑]部署WAR文件后,出现以下异常
由以下原因引起:org.springframework.beans.factory.BeanCreationException:在类路径资源[jms.xml]中定义名称为'SampleQueueIn'的bean创建时出错:调用init方法失败;嵌套的异常是javax.naming.NameNotFoundException:jms / exampleApp / SampleQueueIn--服务jboss.naming.context.java.jboss.jms.exampleApp.SampleQueueIn
此配置在jboss eap 6.4中正常工作(仍在工作)。
我已经搜寻了jboss开发人员站点和stackoverflow站点,但到目前为止都无济于事!
我可以看到我的
运行CLI命令后,我通过重新加载JBoss服务器解决了该错误。我自动执行了两个jboss cli命令和reload命令,以确保JNDI对象查找成功。