[java] JDBCで接続プールを確立するには?


Answers

通常、接続プールが必要な場合は、管理対象環境で実行されるアプリケーションを作成しています。つまり、アプリケーションサーバー内で実行しています。 このような場合は、他のオプションを試す前に、アプリケーションサーバーが提供する接続プーリング機能を確認してください

すぐに使用できるソリューションは、他のアプリケーションサーバーの機能と最も統合されています。 しかし、アプリケーションサーバー内で実行していない場合は、 DBCPお勧めしDBCP 。 これは広く使用されており、ほとんどのアプリケーションに必要なすべての基本的なプール機能を提供します。

Question

誰でもJDBC接続プールを確立する方法の例やリンクを提供できますか?

Googleを検索すると、これを行うためのさまざまな方法がわかります。それはむしろ混乱します。

最終的には、 java.sql.Connectionオブジェクトを返すコードが必要ですが、開始には問題があります。

更新: javax.sqlまたはjava.sql接続実装がプールされていませんか? なぜこれらを使うのが最善ではないでしょうか?




UCPの使用を検討する必要があります。 ユニバーサル接続プール(UCP)は、Java接続プールです。 これは機能豊富な接続プールであり、OracleのReal Application Clusters(RAC)、ADG、DGデータベースと緊密に統合されています。

UCPの詳細については、このpageを参照してpage




Apache Commonsにはその目的のためのライブラリDBCPます。 あなたのプールの周りに奇妙な要件を持っていない限り、私はライブラリが、あなたが望むよりも、よりトリッキーで、より微妙であるために使用したいと思います。




Vibur DBCPはその目的のための別のライブラリです。 Hibernate、Spring + Hibernate、またはプログラムで使用するためにそれを設定する方法を示すいくつかの例は、そのWebサイトで見つけることができます: http://www.vibur.org/ : http://www.vibur.org/

また、 hereは免責事項を参照してhere 。




車輪を再構築しないでください。

容易に利用できる第三者コンポーネントの1つを試してください:

  • DBCP - これはTomcatによって内部的に、そしてあなたDBCPによって本当に使用されます。
  • c3p0

Apache DBCPには、プールjavax.sql.DataSourceを設定する方法のさまざまな例があります。 ここでは、始めに役立つsampleがあります。




私が使用しているアプリケーション・サーバー(私が思い出したようにOracle Application Server 10g)では、プーリングはアプリケーション・サーバーによって処理されます。 javax.sql.DataSourceを使用してJNDIルックアップを使用してjavax.sql.DataSourceを取得します。

それはこのような何かをした

try {     
   context = new InitialContext();
   jdbcURL = (DataSource) context.lookup("jdbc/CachedDS");
   System.out.println("Obtained Cached Data Source ");
}
catch(NamingException e)   
{  
    System.err.println("Error looking up Data Source from Factory: "+e.getMessage());
}

(このコードは書きませんでした。 このドキュメントからコピーされています )。






Related