2012-12-31 25 views
1

我想在我的應用程序中得到一個池的JDBC數據源。我正在編寫一個開源庫,並希望儘可能地進行配置。我寧願不使用JNDI或強制使用任何特定類型的配置文件。獲取共用JDBC數據源的通用方法?

現在,我這樣做:

MysqlConnectionPoolDataSource ds = new MysqlConnectionPoolDataSource(); 
ds.setDatabaseName("blah"); 
ds.setUrl("jdbc:mysql://blaggablah"); 
ds.setUser("jimbob"); 
ds.setPassword("dweezil"); 

顯然,如果你想使用MySQL之外的東西在未來不理想。

是否有某種通用PooledDataSourceFactory的,將採取幾個參數,如數據庫類型和連接信息,並給我一個共用的數據源?

+1

爲什麼不使用真正的連接池(DBCP例如,C3P0,Tomcat的JDBC池),其配置您的應用程序之外(例如,通過JNDI)? –

+0

好主意。不想強迫任何人使用JNDI,但C3PO和BoneCP看起來很有趣,並不需要它。 – ccleve

+1

沒有提到的池「需要」JNDI。 –

回答

0

您可以使用一個標準池/緩存庫,讓使用配置。像Apache Jakarta Pool或ehcache一樣?

1

我不知道您要創建什麼樣的應用(庫?),但除非它是一個Web應用程序。堆棧或其他東西,你可以要求客戶程序員傳入數據源,例如通過構造函數。這實際上是依賴注入的要點。

如果你的應用程序。 例如一個Web應用程序。像Django這樣的堆棧,你仍然可以這樣做,以便在內部將數據源傳遞到中間件(a.k.a DI)。這樣的設計有利於模塊化,並且使得在其他項目中使用該部分代碼變得容易。但是,您必須以某種方式從配置轉到DataSource,因此您需要決定哪種機制(例如JNDI)。我認爲這是完全可以接受的。