2012-03-28 67 views
2

我是JMS编程新手,即使在查看管理控制台时显示失败的JNDI名称,也会遇到NameNotFoundException。在WebLogic 10.3.5中查找JMS队列时,JNDI查找失败

产生的例外是:

javax.naming.NameNotFoundException:无法解析 'tutorialqueue'。解决 '';在weblogic.jndi.internal.BasicNamingNode.newNameNotFoundException(BasicNamingNode.java:1139) 剩余名称 'tutorialqueue' 在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
子部署 -
目标 -

控制台显示教程队列异常说明找不到的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

回答

3

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

+0

感谢约翰。这确实是我的问题! – Todd 2012-03-29 14:23:02

+0

@Todd Iam面临类似的问题。为了克服上述代码或其他设置(如类路径,添加更多罐子)中的问题,您做了哪些更改? – Galaxin 2012-04-01 17:13:32

+0

@Galaxin,我做的更改是在设置队列本身时在WebLogic的管理控制台中进行的。设置: 名称 - TutorialJmsQueue 类型 - 队列 JNDI名称 - tutorialqueue 子部署 - 目标 - 要求我设置的子部署和目标领域 – Todd 2012-04-02 13:38:04

0

要添加一切都OK了...但是你需要更换

> tutorialconnectionfactory and 
> tutorialqueue 

> jms/tutorialconnectionfactory and 
> jms/tutorialqueue 

话,我想它会正常工作......