2013-04-16 45 views
1

我們有一個個人java庫它部署在一個tomcat服務器上(v5.5 & v6)。 該庫與許多Web應用程序共享,因此它被部署在tomcat目錄中的shared/lib中。如何查找(JDBC)JNDI資源?

例外,我必須創建一個新的類到這個庫中,通過JNDI查找jdbc數據源。

對於這一點,我在這裏的代碼:

Context initCtx = new InitialContext(); 
Context envCtx = (Context) initCtx.lookup("java:comp/env"); 
DataSource dataSource = (DataSource) envCtx.lookup("jdbc/corp.xx.xx.xxxxDS"); 

所有的上下文中實例化沒有問題。但是當它查找jdbc數據源時,我有一個例外:名稱jdbc not found在上下文中找到

我們不在webapp中,是否有問題? 是否可以使用ResourceLink聲明一個context.xml?怎麼樣 ?

注:在JNDI是在server.xml中設置好的(一個在GlobalNamingResources資源)

+0

當你寫'pb'時,你的意思是'問題'嗎?請不要像手機一樣對待這個地方。 – EJP

回答

2
<Context ...> 
    ... 
    <ResourceLink name="linkToGlobalResource" 
      global="simpleValue" 
      type="java.lang.Integer" 
    ... 
</Context> 

是新的名稱(相對於Java的名字:comp/env的),全球是在server.xml中配置

所以,從你的代碼中的全局JNDI名稱,查找linkToGlobalResource,這將給你的鏈接全球資源

參考:http://tomcat.apache.org/tomcat-5.5-doc/config/context.html#Resource_Links

答更新時間:

你JNDI訪問將是web應用程序,而不是共享的罐子,因爲獨立的罐子沒有上下文的概念。

+0

是的,但我想知道是否有可能將jndi資源添加到共享庫的Web上下文中。否則,我必須在使用該庫的每個Web應用程序中添加上下文:( – MychaL

+0

請檢查更新的答案。 –