DB 2のjdbcドライバの4種類の紹介------やっとWebsphereプロジェクトがTomcatに移る問題を解決しました(この文はすばらしいので、転載して保留します)
JDBCドライバの秘密
Javaを混同する一般的な根源は、JDBCには異なるバージョンがあり、JDBCドライバには異なるタイプがあり、異なるバージョンのJavaで使用できます.また、新しいJava仕様は常に開発中であり、Javaコミュニティプロセス(Java Community Process)を通じて、http://www.jcp.org)、関連する機能がどんどん拡張されています.
JDBCバージョン
DB 2汎用データベースV 8.1は、JDBC V 2.1仕様および一部のJDBC 3.0仕様をサポートする.汎用JDBCドライバを使用して、JDBC 3.0のニーズを全面的にサポートする計画が進められています.
JDBCドライバはJ 2 EEソリューションのコンポーネントとして認証された.ドライバ認証の結果は、常にSun互換性Webサイトに公開されます.
JDBCドライバアーキテクチャ
JDBCドライバアーキテクチャは4つのタイプに分けられます. Type 1 Type 2 Type 3 Type 4
JDBC Type 1ドライバ
JDBC Type 1ドライバはJDBC-ODBCブリッジに基づく.したがって、ODBCドライバは、このようなJDBCドライバ(Sunによって提供される)と組み合わせて使用することができる.IBMはType 1ドライバをサポートしていないため、推奨される環境ではありません.【図1】JDBC Type 1ドライバの一例を示す図である.
図1.JDBC Type 1ドライバ
JDBC Type 2ドライバ
JDBC Type 2ドライバは、オペレーティングシステム固有のライブラリ(共有ライブラリ)に依存してRDBMSと通信する.アプリケーションはこのJDBCドライバを読み込み、ドライバは共有ライブラリを使用してDB 2サーバと通信します.DB2 UDB for Linux, UNIX® およびWindows® V 8.1には、2つの異なるタイプ2ドライバが用意されています.古い/CLI JDBCドライバは、ファイル 汎用JDBCドライバは、ファイル
JDBC Type 2ドライバを使用してJDBCアプリケーションをサポートできます.WebSphere Application Serverでは、この2つのタイプ2ドライバが同時にサポートされています.注意:古い/CLI Type 2ドライバは、将来のバージョンでは強化されません.
【図2】JDBC Type 2ドライバを用いたアプリケーションの典型的なトポロジーを示す図である.
図2.JDBC Type 2ドライバを用いたアプリケーション
JDBC Type 3ドライバ
JDBC Type 3ドライバは、DB 2データにアクセスするには、DB 2 JDBC Appletサーバ(DB 2 JDBC Applet Server)と通信する必要がある純粋なJava実装です.このようなドライバは、Java appletがDB 2データソースにアクセスできるようにすることを目的としています.図3に示す態様では、アプリケーションは、DB 2クライアントがインストールされた別の機器と通信する.
図3.Type 3 JDBCドライバを用いた一般的なアプリケーションスキーム
JDBC Type 3ドライバは、パッケージ名
Type 3ドライバは、
Type 3ドライバの代わりに汎用JDBC Type 4ドライバを使用することを奨励します.
JDBC Type 4ドライバ
Type 4ドライバは、Java専用のJDBCドライバであり、データベースサーバに直接接続されている.DB 2 UDB for Linux,UNIX,Windows V 8.1には「ユニバーサルJDBCドライバ(Universal JDBC driver)」と呼ばれるType 4ドライバが導入されている.汎用JDBCドライバは、ファイル
汎用Type 2と汎用Type 4ドライバは、同じ実装クラス名を持つことに注意してください.DB 2が内部でどのドライバをインスタンス化するかを区別する方法は2つあります.接続プロパティを使用して、接続が共有ライブラリ(Type 2)を使用するかどうか、またはドライバがJavaアプリケーションからの直接接続を開始するかどうかを決定します(Type 4). は、異なる接続URLモードを使用して、Type 2とType 4の動作のどちらが望ましいかを示します.Type 4 URLモードの例:文字列「
汎用JDBCドライバは、ドライバタイプの接続性やターゲットプラットフォームに関係のない抽象的なJDBCプロセッサです.汎用JDBCドライブは、分散型およびローカルDB 2 UDBアクセス用のアーキテクチャに依存しないJDBCドライバです.汎用JDBCドライバは、任意の特定のJDBCドライバタイプの接続性またはターゲットプラットフォームとは独立しているため、1つのDB 2 UDBドライバインスタンスですべてのJava接続性(Type 4ドライバ)とJNIベースの接続性(Type 2ドライバ)を同時にサポートします.このドライバは、独立したJavaアプリケーションまたは多層アプリケーションで使用できます.
重要:DB 2 UDB V 8.1.2について、汎用JDBCドライバはCLASSPATHにライセンスJARファイルと Cloudscape™ Network Server V5.1: DB 2 UDB V 8 for Linux、UNIX、Windowsサーバ: DB 2 UDB for iSeries® and z/OSサーバ(DB 2 ConnectおよびDB 2 Enterprise Server Editionとともに提供):
汎用ドライバは、ターゲット・サーバにインストールされている必須ストレージ・プロシージャを使用して、データベース・メタデータ・ディレクトリを問合せ、サーバ・エラー・メッセージ・テキストを取得できます. Linux、UNIX、およびWindows上のUDB V 8については、これらのストレージ・プロシージャが予めインストールされている. DB 2 UDB for OS/390® V 6は、PTF UQ 72081とUQ 72082を取り付ける必要があります. DB 2 UDB for OS/390 and z/OSV 7には、PTF UQ 72083をインストールする必要があります.まもなく発売されるz/OS上のDB 2 UDB V 8には、必要なストレージプロセスが予めインストールされています. DB 2 UDB for iSeries V 5 R 1には、PTF SI 06308、SI 06300、SI 06301、SI 06302、SI 06305、SI 06307、SI 05872が必要である. DB 2 UDB for iSeries V 5 R 2には、PTF SI 06541、SI 06796、SI 07557、SI 07564、SI 07565、SI 07566、SI 07567が必要です.DB 2 UDB for iSeries V 5 R 3には、必要なストレージプロセスが予めインストールされます.
図4に、Type 4 JDBCドライバ実装を示す.注意:Linux、UNIX、WindowsのJavaアプリケーションまたはappletからDB 2 for z/OS/390に接続するために使用される汎用JDBC/SQLJドライバ(Type 4およびType 2)には、適切なライセンスファイルが必要です(
図4.Type 4 JDBCドライバ実装
Javaを混同する一般的な根源は、JDBCには異なるバージョンがあり、JDBCドライバには異なるタイプがあり、異なるバージョンのJavaで使用できます.また、新しいJava仕様は常に開発中であり、Javaコミュニティプロセス(Java Community Process)を通じて、http://www.jcp.org)、関連する機能がどんどん拡張されています.
JDBCバージョン
DB 2汎用データベースV 8.1は、JDBC V 2.1仕様および一部のJDBC 3.0仕様をサポートする.汎用JDBCドライバを使用して、JDBC 3.0のニーズを全面的にサポートする計画が進められています.
JDBCドライバはJ 2 EEソリューションのコンポーネントとして認証された.ドライバ認証の結果は、常にSun互換性Webサイトに公開されます.
JDBCドライバアーキテクチャ
JDBCドライバアーキテクチャは4つのタイプに分けられます.
JDBC Type 1ドライバ
JDBC Type 1ドライバはJDBC-ODBCブリッジに基づく.したがって、ODBCドライバは、このようなJDBCドライバ(Sunによって提供される)と組み合わせて使用することができる.IBMはType 1ドライバをサポートしていないため、推奨される環境ではありません.【図1】JDBC Type 1ドライバの一例を示す図である.
図1.JDBC Type 1ドライバ
JDBC Type 2ドライバ
JDBC Type 2ドライバは、オペレーティングシステム固有のライブラリ(共有ライブラリ)に依存してRDBMSと通信する.アプリケーションはこのJDBCドライバを読み込み、ドライバは共有ライブラリを使用してDB 2サーバと通信します.DB2 UDB for Linux, UNIX® およびWindows® V 8.1には、2つの異なるタイプ2ドライバが用意されています.
db2java.zip
に提供される.現パッケージ名はCOM.ibm.db2.jdbc.app.DB2Driver
です.このドライバは現在J 2 EE認証に使用されている.別名「appドライバ」は、リモート・データベースのローカルDB 2 UDBクライアントを介してローカル接続を実行するというコンセプトとそのパッケージ名に由来します.db2jcc.jar
に提供される.現パッケージ名はcom.ibm.db2.jcc.DB2Driver
です.このドライバは、DB 2 UDB for Linux、UNIX、Windows V 8.1の新機能です.最初のインプリメンテーション(V 8.1)では、このドライバはType 4ドライバアーキテクチャを使用してDB 2サーバに直接Java接続するために使用される.DB 2 V 8.1.2では、Type 2アーキテクチャでこのドライバを使用できます.Type 2アーキテクチャでこのドライバを使用する主な理由の1つは、ローカルアプリケーションのパフォーマンスと分散トランザクションのサポートです.汎用JDBC Type 2ドライバは、分散トランザクションおよび接続プールをサポートするために、それぞれcom.ibm.db2.jcc.DB2XADataSource
およびcom.ibm.db2.jcc.DB2ConnectionPoolDataSource
を使用します.JDBC Type 2ドライバを使用してJDBCアプリケーションをサポートできます.WebSphere Application Serverでは、この2つのタイプ2ドライバが同時にサポートされています.注意:古い/CLI Type 2ドライバは、将来のバージョンでは強化されません.
【図2】JDBC Type 2ドライバを用いたアプリケーションの典型的なトポロジーを示す図である.
図2.JDBC Type 2ドライバを用いたアプリケーション
JDBC Type 3ドライバ
JDBC Type 3ドライバは、DB 2データにアクセスするには、DB 2 JDBC Appletサーバ(DB 2 JDBC Applet Server)と通信する必要がある純粋なJava実装です.このようなドライバは、Java appletがDB 2データソースにアクセスできるようにすることを目的としています.図3に示す態様では、アプリケーションは、DB 2クライアントがインストールされた別の機器と通信する.
図3.Type 3 JDBCドライバを用いた一般的なアプリケーションスキーム
JDBC Type 3ドライバは、パッケージ名
COM.ibm.db2.jdbc.net
に基づいて命名された「ネットワーク(net)ドライバ」と呼ばれることが多い.DB 2 V 8.1は、JDBCアプリケーションで使用できるネットワークドライバをサポートしています.Type 3ドライバは、
db2java.zip
ドライバが常にDB 2 Appletサーバと同じメンテナンスレベルであることを要求します.ドライバがapplet内で使用されている場合は、ブラウザがアプリケーションの実行中に対応するdb2java.zip
ファイルをダウンロードするため、問題ではありません.多くのお客様は、Type 2ドライバではなくType 3ドライバを使用して、古い/CLIドライバを使用してType 2接続を行うために必要なデータベースディレクトリ情報を作成するために必要なDB 2クライアントのインストールと必要なDB2 CATALOG DATABASE
コマンドを回避します.WebSphere Application Serverおよび他のJ 2 EEサーバでは、分散トランザクション(JTA)がサポートされていないため、IBM Type 3ドライバは現在サポートされていません.将来のバージョンではType 3ドライバは強化されません.Type 3ドライバの代わりに汎用JDBC Type 4ドライバを使用することを奨励します.
JDBC Type 4ドライバ
Type 4ドライバは、Java専用のJDBCドライバであり、データベースサーバに直接接続されている.DB 2 UDB for Linux,UNIX,Windows V 8.1には「ユニバーサルJDBCドライバ(Universal JDBC driver)」と呼ばれるType 4ドライバが導入されている.汎用JDBCドライバは、ファイル
db2jcc.jar
に提供される.その実装パッケージ名はcom.ibm.db2.jcc.DB2Driver
である.汎用Type 2と汎用Type 4ドライバは、同じ実装クラス名を持つことに注意してください.DB 2が内部でどのドライバをインスタンス化するかを区別する方法は2つあります.
jdbc:db2://server1:50000/sample
」は、JavaアプリケーションがDB 2サーバ(ホスト名server 1)上に構成されたDB 2インスタンスに存在する「sample」というデータベースに直接接続することをJDBCドライバに要求し、DB 2サービスはポート50000上でリスニングする.Type 2 URLパターンの例:文字列「jdbc:db2:sample
」.DB 2サーバ(「server 1」)とポート(「50000」)に関する情報は、DB 2クライアントカタログにあります.汎用JDBCドライバは、ドライバタイプの接続性やターゲットプラットフォームに関係のない抽象的なJDBCプロセッサです.汎用JDBCドライブは、分散型およびローカルDB 2 UDBアクセス用のアーキテクチャに依存しないJDBCドライバです.汎用JDBCドライバは、任意の特定のJDBCドライバタイプの接続性またはターゲットプラットフォームとは独立しているため、1つのDB 2 UDBドライバインスタンスですべてのJava接続性(Type 4ドライバ)とJNIベースの接続性(Type 2ドライバ)を同時にサポートします.このドライバは、独立したJavaアプリケーションまたは多層アプリケーションで使用できます.
重要:DB 2 UDB V 8.1.2について、汎用JDBCドライバはCLASSPATHにライセンスJARファイルと
db2jcc.jar
ファイルがあることを要求する.以下は必要なライセンスJARファイルです.db2jcc_license_c.jar
db2jcc_license_su.jar
db2jcc_license_cisuz.jar
汎用ドライバは、ターゲット・サーバにインストールされている必須ストレージ・プロシージャを使用して、データベース・メタデータ・ディレクトリを問合せ、サーバ・エラー・メッセージ・テキストを取得できます.
図4に、Type 4 JDBCドライバ実装を示す.注意:Linux、UNIX、WindowsのJavaアプリケーションまたはappletからDB 2 for z/OS/390に接続するために使用される汎用JDBC/SQLJドライバ(Type 4およびType 2)には、適切なライセンスファイルが必要です(
db2jcc_license_cisuz.jar
).このライセンスファイルは、DB 2 Connect製品とともに提供されます.図4.Type 4 JDBCドライバ実装