2012-09-20 37 views
0

我們必須重用某段具有jdbc調用的代碼。現有的代碼是我們無法修改的jar文件。他們正在做JNDI查找數據庫連接這樣的事情如何做獨立於服務器的JNDI查找?

InitialContext context = new InitialContext(); 
DataSource dataSource = (DataSource) context.lookup("java:jdbc/testDB"); 

這個工作在JBoss的很好,但我們正在嘗試使用相同的Tomcat服務器和失敗。在google搜索後,我發現對於tomcat我需要做這樣的事情。

InitialContext context = new InitialContext(); 
DataSource dataSource = (DataSource) context.lookup("java/comp/env/:jdbc/testDB"); 

我不能修改代碼以使java/comp/env只適用於tomcat。有沒有一種獨立於服務器的方式(通過某個配置文件)來解決這個問題,以便我可以在不修改代碼的情況下找到資源?

回答

0

「某段代碼」是 - 什麼?在EJB, Servlet, JSP情況下..你可以進行注射:

@Resource(mappedName = "jdbc/testDB") 
DataSource dataSource; 
+0

對不起一定的代碼是一個我沒有訪問(基本上這就是第三方服務,做數據庫查詢)的,其中有上下文查詢。所以我不能像上面提到的那樣添加註釋 –

+0

但是,如果你無法訪問代碼,你打算如何改變任何東西? :) –

+0

我在想如果有服務器配置,我可以改變,這樣我就不必修改編輯代碼。例如,代碼保持不變,使用某個xml文件(服務器依賴的方式)更改指定jndi資源名稱的方式 –