我構建了一個具有獨立「核心」層的應用程序,該應用程序也用於構建一個webapp(這是一個Maven多模塊項目,具有'core'模塊和'webapp'模塊,它具有依賴於'核心'模塊)。 它使用MySQL數據庫。我嘗試實現DataSource
,這兩種情況都可以(在獨立環境中只有1個連接是足夠的)。在獨立應用程序和webapp上下文中使用哪個應用程序的DataSource(Java 7,Tomcat 7)?
在閱讀了很多關於DataSources的文檔後,我不得不說我有點失落。我得出的結論是,也許我應該使用Tomcat JDBC Connection Pool。我的問題是:
1)在獨立上下文中,我應該如何提供配置以使用DataSource,因爲知道此配置將由Tomcat在webapp上下文中提供(因此,獨立配置不應覆蓋Tomcat配置)?
我應該這樣做in this other question在僅在獨立的情況下調用的方法?但是,我如何在webapp上下文中看到Tomcat已經提供了DataSource?
或者我應該使用bean定義嗎?但是如何在webapp上下文中使用這個bean?
2)其他池數據源實現呢?
不應該只是使用MySQL DataSource?
我讀到,在Java EE 7中,DataSources使用更簡單(https://blogs.oracle.com/arungupta/entry/default_datasource_in_java_ee)。那麼,Java 7有什麼突破嗎?我應該絕對在Java 7中使用一個新的DataSource提供程序?
結論: 是的,我迷路了,我不知道什麼是「黃金標準」爲數據源使用。感謝您的幫助。
感謝您的回覆,然後提出幾個問題:我的'核心'層是一個可用於其他應用程序的庫。如果我不希望這些應用程序執行第二個鏈接中描述的任務,則應將InitialContext設置在**核心層的內部,對嗎?所以也許我應該更簡單地在覈心層執行查找,捕獲如果不在webapp上下文中拋出的異常,然後在那種情況下設置我自己的Connection?那有效嗎? – FBB 2013-03-05 00:39:40
如果'核心'包含這樣的功能,可以由其他應用程序執行。您可以生成第三個組件(使用自定義'InitialContextFactory'),可以從獨立應用程序調用該組件。我認爲這個需求功能對於獨立應用程序可能是獨一無二的,所以你可以將它嵌入到這樣的應用程序中。另一方面,你可以實現一個連接工廠。 – 2013-03-05 01:49:57
是的,只是使用DriverManager的簡單連接工廠,當無法使用JNDI加載DataSource時。驅動程序可以通過屬性文件進行配置。那有效嗎? Os是一種可怕的設計模式? :p – FBB 2013-03-05 12:42:19