2012-03-28 92 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 

話,我想它會正常工作......