2014-05-18 60 views
0

我有一個使用JDBC(ojdbc6.jar)和BoneCP連接到Oracle數據庫的servlet。我現在需要將我的BoneCP使用代碼移植到可以在WebLogic中使用的東西,而不在包中使用BoneCP。BoneCP vs WebLogic自己的數據庫連接池

推薦的方法是什麼?什麼的WebLogic功能,我可以使用,特別是得到BoneCP的的等效:

  • 性能
  • 能夠記錄失敗的SQL語句從失去DB連接
  • 自動恢復

在此先感謝。

回答

0

最好的方法是創建一個指向數據庫的標準Oracle JDBC連接池。根據您的需要調整它(連接數量等)。接下來,您需要從代碼中重構任何對您以前的連接池實現的明確引用。如果你在你的代碼中使用了java.sql。*接口,那麼應該有很少到沒有引用。

一旦所有這些都被重構,你將只有一些代碼(或配置文件)告訴你的應用程序從給定的JNDI名稱中恢復實現javax.sql.DataSource的東西,並從中獲得Connections。其餘的應該是一樣的 - 只要做你需要的任何事情,並關閉你的ResultSetsStatementsConnections,因爲你一直在做直到現在。

關於你的問題,你會發現如何監視連接池,它的失敗恢復策略,這裏的大量信息(取決於您的應用程序服務器版本,我貼在這裏我使用了一個):

http://docs.oracle.com/cd/E15051_01/wls/docs103/jdbc_admin/jdbc_datasources.html

關於性能,我沒有準確的數據和比較兩個實現的基準;爲了你的安寧,我會說你在連接池實現中從未發現數據庫性能問題 - 這並不意味着它不能存在,但它是我尋找它的最後一個地方;)

+0

謝謝。但有一個問題 - WebLogic數據源池背後的實際實現是什麼?它是Oracle通用連接池(UCP)嗎?因爲如果是這樣,人們[這裏](http://stackoverflow.com/a/4444922/2523948)明確表示*不推薦*。 –

+0

AFAIK,連接池的weblogic實現等,自8.1到10.3(我沒有嘗試過更新的版本,我很抱歉)屬於weblogic.jdbc.common.internal。*,所以我猜它的代碼來自BEA時代。我不知道自那時起代碼是否合併過,但UCP似乎與我不同 –