2013-07-15 32 views
0

這可能有些奇怪的問題,但我不知道如何以另一種方式做到這一點。基本上,我在兩個Maven項目之間共享連接代碼。一個是Maven Web應用程序,另一個是常規的Maven項目。如何在Java SE項目中使用InitialContext數據庫信息

要設置數據庫連接上下文,我在Maven web應用程序中使用META_INF/context.xml。

然而,常規的Maven項目不使用這個文件,因此當代碼來獲取數據源運行:

Context envCtx = (Context) new InitialContext().lookup("java:comp/env"); 
dbPool = (DataSource) envCtx.lookup("jdbc/MyAppUCP"); 
當然

一個NamingException的異常。我如何重用這種使用常規Maven Java應用程序獲取數據庫連接的方法?將META_INF /目錄複製到項目中不起作用。

+0

顯示您的jdbc資源,也許您剛剛沒有正確命名它。 –

+0

它在Maven web應用程序中工作得很好。這不是問題。問題是我希望能夠在常規maven項目中使用envCtx.lookup(「jdbc/MyAppUCP」)。 –

回答

1

具有默認構造函數的InitialContext只能在託管環境(j2EE容器)中使用。如果您需要從Java SE進程查找JNDI,則需要將一個屬性對象作爲參數傳遞給重載的構造函數。

每個應用程序/ web服務器都有自己的一組屬性,需要在屬性對象中進行設置。請參閱應用程序服務器的文檔(http://docs.oracle.com/javase/jndi/tutorial/beyond/env/source.html)。

同樣,在從外部進程查找JNDI條目時會存在安全限制。

相關問題