spring - javax.naming.NameNotFoundException: java:jboss/jms/exampleApp/SampleQueueIn
问题描述
我们正在从 JBoss EAP 6.4 迁移到 JBoss EAP 7.0。我们早期的 JMS 配置不适用于 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>
我的代理域 componentContext.xml 具有侦听器 bean
<beans profile="jboss">
<bean id="jmsContainer" parent="messageListener">
<property name="destination" ref="SampleQueueIn" />
<property name="messageListener" ref="sampleInformationListenerImpl" />
</bean>
</beans>
commands.cli 部分用于为 wmq 添加管理对象
/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 的子资源下的 JBoss for wmq 中看到我的管理对象。
我正在使用 IBM wmq v9.1.0.2。
[编辑] 一旦我部署了我的 WAR 文件,我就会得到以下异常
原因:org.springframework.beans.factory.BeanCreationException:创建类路径资源[jms.xml]中定义的名称为'SampleQueueIn'的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: jms/exampleApp/SampleQueueIn-- service jboss.naming.context.java.jboss.jms.exampleApp.SampleQueueIn
此配置在 jboss eap 6.4 中工作(仍在工作)。
我已经搜遍了 jboss 开发者网站和 stackoverflow 网站,但直到现在都无济于事!
我可以看到我的
解决方案
运行 CLI 命令后,我通过重新加载 JBoss 服务器解决了错误。我自动执行了 jboss cli 命令和重新加载命令,以确保 JNDI 对象查找成功。
推荐阅读
- reactjs - 十进制格式数 React
- powershell - 在 PowerShell 中使用枚举类型
- android - mpandroidchart中折线图的滚动完成监听器
- linux - 使用特定行删除多个目录中的文件
- javascript - 如何将用于创建密码的iv存储在nodejs的createcipheriv中,以供将来解密?
- r - R 数据表。需要使用分组和复杂条件过滤修改列
- android - Android:三星 Galaxy S5 上的浮点虚拟键盘
- python - 获取有序列表的所有有序子列表
- vb.net - 如何在关闭表单或单击按钮之前禁用外部交互?
- java - 将特定数据保存在数据库的 JTable 中