我是JMS编程的新手,并且遇到了NameNotFoundException,即使在查看管理控制台时,它显示了失败的JNDI名称。
产生的例外是:
javax.naming.NameNotFoundException:无法解析'tutorialqueue'。解决 '';剩下的名字'tutorialqueue' at weblogic.jndi.internal.BasicNamingNode.newNameNotFoundException(BasicNamingNode.java:1139) 在weblogic.jndi.internal.BasicNamingNode.lookupHere(BasicNamingNode.java:252) 在weblogic.jndi.internal.ServerNamingNode.lookupHere(ServerNamingNode.java:182) 在weblogic.jndi.internal.BasicNamingNode.lookup(BasicNamingNode.java:206) 在weblogic.jndi.internal.WLEventContextImpl.lookup(WLEventContextImpl.java:254) 在weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:411)
在管理控制台中,我看到:
名称 - TutorialJmsConnectionFactory
类型 - 连接工厂
JNDI名称 - tutorialconnectionfactory
子部署 - 默认目标
目标 - AdminServer
名称 - TutorialJmsQueue
类型 - 队列
JNDI名称 - tutorialqueue
子部署 -
目标 -
控制台显示 tutorialqueue JNDI名称,该名称表示无法找到该异常。此外,已成功找到tutorialconnectionfactory名称WAS。可能与子部署和/或目标空白有关吗?
以下是查找发生/失败的代码:
QueueConnectionFactory queueFactory = ( QueueConnectionFactory ) ic.lookup( "tutorialconnectionfactory" );
QueueConnection queueConnection = queueFactory.createQueueConnection();
QueueSession queueSession = queueConnection.createQueueSession( false , Session.AUTO_ACKNOWLEDGE );
Queue queue = ( Queue ) ic.lookup( "tutorialqueue" );
QueueSender sender = queueSession.createSender( queue );
有人能指出我正确的方向吗? TIA
答案 0 :(得分:3)
在weblogic中,您应该将队列设置为使用与连接工厂相同的子部署和目标,这两者都需要在JVM中找到。更新队列的目标和子部署以匹配连接工厂,它应该开始工作。
答案 1 :(得分:0)
添加一切都很好......但是你需要替换
> tutorialconnectionfactory and
> tutorialqueue
带
> jms/tutorialconnectionfactory and
> jms/tutorialqueue
然后我认为它会正常工作......