4

私は初心者で、簡単な Java Swing アプリケーションをいくつか作成しました。Apache Commons DBCP を使用して接続プールを作成し、データソースにアクセスすることができました。

私は最近、JSP とサーブレットを使用して Java Web ベースのアプリケーションを作成し始めました。JNDI を使用してデータソースにアクセスする方法を学びました。XML ファイルを更新し、InitialContext() と lookup("java:comp/env") を使用します。サーブレット/JSP コンテナーとして Apache Tomcat を使用しています。

1.しかし、DB接続プールはどこに作成されますか?

2. はいの場合、それは JNDI が何らかの方法で DBCP を内部的に使用することを意味しますか?

Swing アプリケーション用の DBCP を作成する必要がある場合、最初に GenericObjectPool のインスタンスを作成し、次に接続ファクトリ オブジェクトを作成し、最後に PoolableConnectionFactory オブジェクトを作成して、接続の取得に使用されるデータソースを作成する必要がありました。

4

3 に答える 3

4

JNDIは、システムのある部分から別の部分にオブジェクトを渡すメカニズムです(技術用語ではクラスローダー間で)。これは、StringやDataSourceなどのJavaランタイムにあるクラスとインターフェースに最も役立ちます。

つまり、この場合、JNDIは単なるトランスポートメカニズムであり、実際の接続プールを別の場所で定義する必要があります。ほとんどのWebコンテナには、システム全体の接続プールを定義するメカニズムがあり、JNDIを使用してそれにアクセスできます。

于 2013-02-22T20:28:50.973 に答える
3

Tomcatは、JNDIデータソースにApacheDBCPApachePoolのカスタム実装を使用します。これらのライブラリは、の単一のJARにあります。$CATALINA_HOME/lib/tomcat-dbcp.jar

メインパッケージは、 ApacheCommonsorg.apache.tomcat.dbcpからの通常のパッケージとの競合を回避するためのものです。

于 2013-02-22T20:28:07.740 に答える
3

JNDI は、ルックアップによってリモート リソースを検索するメカニズムです。接続プーリング ライブラリとの共通点はありません。c3p0、DBCP、および BoneCP が最も有名なこれらのライブラリを使用すると、接続やステートメントをプールする機能を備えたデータ ソースを作成できます。このデータ ソースがアプリケーションで使用されている場合は、JNDI を使用する必要はありません。リモートシステム (Tomcat など) にある場合は、JNDI を使用してデータ ソースにアクセスする必要があります。

ちなみに、古い学校のサーブレットと JSP の組み合わせを使用することを選択したのはなぜですか? JSF 2.x で推奨されるビュー テクノロジである JSP の後継である facelets を使用することをお勧めします。

もう 1 つのコメントは、データ ソースの管理をよく知られたフレームワークに移行することです。1 つの方法として、Hibernate などの ORM を使用してデータ ソース (接続プールを念頭に置いて作成されたもの) を管理することが考えられます。

于 2013-02-22T21:05:15.737 に答える