启动服务器时连接JMS连接工厂失败:无法获取JNDI上下文
JMS连接错误排查(无法获取JNDI上下文)
错误日志
myQueueSender org.apache.axis2.transport.jms.AxisJMSException: 无法获取JNDI上下文, JMS连接工厂:QueueConnectionFactory 或默认目标:null,对应JMS CF: myQueueSender,使用配置:{transport.jms.UserName=wso2user, transport.jms.ConnectionFactoryType=queue, transport.jms.Password=***, transport.jms.CacheLevel=producer, java.naming.provider.url=failover:tcp://10.197.41.147:61616, transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory, java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory}
本地配置参数
parameter.username = "wso2custiomer" parameter.password = "123456abcd" parameter.initial_naming_factory = "org.apache.activemq.jndi.ActiveMQInitialContextFactory" parameter.provider_url = "failover:tcp://10.197.41.147:61616" parameter.connection_factory_name = "QueueConnectionFactory" parameter.connection_factory_type = "queue" parameter.cache_level = "producer"
问题分析与解决步骤
- 用户名不匹配:错误日志中实际使用的用户名是
wso2user,但本地配置的是wso2custiomer(疑似拼写错误,应为wso2customer),身份验证失败会直接导致无法获取JNDI上下文,需先修正用户名,确保与ActiveMQ服务端配置的账号一致。 - 验证JNDI连接工厂:确认ActiveMQ服务端已正确配置
QueueConnectionFactory这个JNDI资源,名称完全匹配(注意大小写敏感)。 - 检查网络连通性:测试服务器到
10.197.41.147:61616的网络是否通畅,用telnet或nc命令确认端口可访问,排除防火墙或网络故障导致的连接失败。 - 确认ActiveMQ状态:查看ActiveMQ服务端日志,确认服务是否正常启动,是否存在连接拒绝类的错误记录。
- 核对配置映射:确保本地配置参数正确映射到Axis2的JMS传输参数,比如
parameter.username对应transport.jms.UserName、parameter.connection_factory_name对应transport.jms.ConnectionFactoryJNDIName,避免配置项映射错误。
内容的提问来源于stack exchange,提问作者Wajih Haider
相关产品推荐
相关产品推荐

