2012-07-18 28 views
2

林具有麻煩映射的Weblogic(12c)的定義JNDI數據源到本地JNDI名稱。映射的NameNotFoundException JNDI數據源到本地名稱

我在定義爲「mysqltestds」的WebLogic MySQL的數據源數據源,我想在Web應用程序中映射我到本地名「localds」

我的web.xml性能

<resource-ref> 
    <res-ref-name>localds</res-ref-name> 
    <res-type>javax.sql.DataSource</res-type> 
    <res-auth>Container</res-auth> 
</resource-ref> 

與weblogic.xml中

<weblogic-web-app> 
    <resource-description> 
     <res-ref-name>localds</res-ref-name> 
     <jndi-name>mysqltestds</jndi-name>lls 
    </resource-description> 
</weblogic-web-app> 

當我使用全局名稱獲得數據源「mysqltestds」它工作正常。

Context initialContext = new InitialContext(); 
Object resource = initialContext.lookup("mysqltestds"); 
dataSource = (DataSource) resource; 

然而,當我嘗試 「localds」 失敗,出現錯誤:

Context initialContext = new InitialContext(); 
Object resource = initialContext.lookup("localds"); 
dataSource = (DataSource) resource; 

javax.naming.NameNotFoundException: Unable to resolve 'localds'. Resolved ''; remaining name 'localds'

任何人的幫助。我按照這個stackoverflow問題Tomcat vs Weblogic JNDI Lookup的方向,但我沒有取得任何成功。

回答

1

我最終通過試驗和錯誤的工作了這一點。

它,當你使用的是本地資源引用看來,你必須使用的「java:comp/env的/ ..」來稱呼它的前綴,所以我的Java代碼工作時,我做了以下修改:

Context initialContext = new InitialContext(); 
Object resource = initialContext.lookup("java:comp/env/localds"); 
dataSource = (DataSource) resource; 

希望其他人是否有類似的問題

1

夫婦的事情。
首先要檢查的是確保您實際將數據源部署到您正在訪問的服務器。因爲如果你沒有,你會得到確切的消息。

此外,如果您在控制檯轉到看看服務器頁面,然後點擊你正在使用的服務器。

再有就是所謂的像jndiViewer頁面上的鏈接,你應該能夠瀏覽您的數據源,以確認其位置。

+0

我知道它的展開,因爲如果我使用WebLogic JNDI名稱(「mysqltestds」),它的工作原理,這是有用的。另外,我可以在JNDI查看器中看到它。 – Dunderklumpen 2012-07-18 01:15:59

相關問題