EJB3.0部署消息驱动Bean抛javax.naming.NameNotFoundException异常
部署消息驱动Bean时抛出javax.naming.NameNotFoundException异常,原因是JMS消息队列未在JNDI命名服务中注册。其解决方法为:需要手动配置一个Queue对象,例如在JBoss服务器中修改mail-service.xml或新建-service.xml文件,将Queue绑定至queue/myqueue路径。完成上述操作并重新部
部署EJB的消息驱动Bean(MDB)时,如果遇到下面这个错误,十有八九是JMS队列没有在JNDI中注册导致的。先看看报错信息:
ERROR [org.jboss.resource.adapter.jms.inflow.JmsActivation] (WorkManager(2)-2) Unable to reconnect org.jboss.resource.adapter.jms.inflow.JmsActivationSpec@2705ea(ra=org.jboss.resource.adapter.jms. JmsResourceAdapter@737612 destination=queue/myqueue destinationType=ja vax.jms.Queue tx=true durable=false reconnect=10 provider=ja va:/DefaultJMSProvider user=null maxMessages=1 minSession=1 maxSession=15 keepAlive=60000 useDLQ=true DLQHandler=org.jboss.resource.adapter.jms.inflow.dlq.GenericDLQHandler DLQJndiName=queue/DLQ DLQUser=null DLQMaxResent=5) ja vax.naming.NameNotFoundException: myqueue not bound
错误直指核心——myqueue这个队列在JNDI中找不到。JBoss不会自动创建Queue对象,需要手动配置。下面给出两种常用的解决方案,任选其一即可。
解决方案一:修改mail-service.xml
在JBoss根目录下的 server\default\deploy\mail-service.xml 文件中,添加以下MBean定义:
queue/myqueue jboss.mq:service=DestinationManager
解决方案二:新建xxx-service.xml
在 server\default\deploy 目录下新建一个以 -service.xml 结尾的文件(比如 MDB-service.xml),可以放在子目录中。文件内容如下:
jboss.mq:service=DestinationManager
原因分析
消息驱动Bean的注解通常像这样:
@MessageDriven(
activationConfig = {
@ActivationConfigProperty(propertyName="destinationType", propertyValue="ja vax.jms.Queue"),
@ActivationConfigProperty(propertyName="destination", propertyValue="queue/myqueue")
}
)
注意 destination 属性的值 queue/myqueue 对应的是JNDI名称。JBoss不会自动创建这个队列,因此必须手动配置一个Queue对象,并将其绑定到 queue/myqueue 这个JNDI路径上。
OK,采用以上任意一种方案都能解决。只需重新部署消息驱动Bean,然后再运行客户端,你会发现调用已经成功——队列被正确绑定,MDB正常工作了。
Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。
Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。















