在WebLogic 10.3.5中查找JMS队列时,JNDI查找失败

时间:2012-03-28 19:21:59

标签: java-ee jms weblogic

我是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

2 个答案:

答案 0 :(得分:3)

在weblogic中,您应该将队列设置为使用与连接工厂相同的子部署和目标,这两者都需要在JVM中找到。更新队列的目标和子部署以匹配连接工厂,它应该开始工作。

答案 1 :(得分:0)

添加一切都很好......但是你需要替换

> tutorialconnectionfactory and 
> tutorialqueue

> jms/tutorialconnectionfactory and 
> jms/tutorialqueue

然后我认为它会正常工作......