Cosminexus V9 アプリケーションサーバ 機能解説 互換編

[目次][用語][索引][前へ][次へ]

3.3.4 データベースとの接続

WebアプリケーションからJDBCを使用してデータベースに接続をする場合,サーブレットエンジンモードとJ2EEサーバモードではWebアプリケーションの実装方法および設定方法が異なります。

<この項の構成>
(1) データベースとの接続に使用できるクラスとインタフェース
(2) ルックアップの方法
(3) コネクションプーリングの方法

(1) データベースとの接続に使用できるクラスとインタフェース

サーブレットエンジンモードのWebアプリケーションの場合,使用できるのはjava.sqlパッケージで定義されたクラス,インタフェースだけです。java.sql.DriverManagerクラスのgetConnectionメソッドを使ってデータベースコネクションを取得し,コネクションプール機能が使用できます。

J2EEサーバモードのWebアプリケーションの場合,java.sqlパッケージとjavax.sqlパッケージで定義されたクラス,インタフェースが使用できます。このうち,javax.sql.DataSourceクラスのgetConnectionメソッドを使ってデータベースコネクションを取得する方法をお勧めします。この場合,コネクションプール機能が使用でき,さらにローカルトランザクションやグローバルトランザクション配下でデータベースコネクションを使用できるようになります。

javax.sql.DataSourceクラスを使用してデータベースコネクションを取得する例を次に示します。

 
import javax.naming.InitialContext;
import javax.sql.DataSource;
import java.sql.Connection;
 
public void doPost(HttpServletRequest req, HttpServletResponse resp)
   throws ServletException, java.io.IOException {
 
・・・
  InitialContext ic = new InitialContext();              // JNDIの初期コンテキストの生成
  DataSource ds = (DataSource)ic.lookup(“java:comp/env/MyDB”);    // DataSourceをlookupにより取得
  Connection con = ds.getConnection();                   // DataSourceからコネクションを取得・・・
}
 

(2) ルックアップの方法

J2EEサーバモードではjavax.sql.DataSourceクラスをJNDIのルックアップで取得します。ルックアップの実装および設定方法を次に示します。なお,ここでは,サーバ管理コマンドを使用した設定方法について説明します。

なお,DB Connectorでは,ルックアップされるための設定は必要ありません。

(3) コネクションプーリングの方法

J2EEサーバモードでは,WebアプリケーションはDB Connectorというリソースアダプタを経由してデータベースに接続します。DB Connectorは,Webアプリケーションに対してJDBCのインタフェースを提供します。また,DB Connectorを使用する場合,Webアプリケーションで開始したトランザクションの配下でデータベースに接続できます。

サーブレットエンジンモードで使用するjava.sql.DriverManagerでは,getConnectionメソッドの引数に与えるデータベースURLによって接続先データベースを指定しますが,J2EEサーバモードで使用するDB Connectorは,データベースとの接続方法やトランザクションの形態によって実装が分かれています。このため,用途に合わせてDB Connectorを選択し,接続先データベースやコネクションプーリングなどをDB Connectorのプロパティ(サーバ管理コマンドを使用する場合は,Connector属性ファイルに設定)に定義します。

サーブレットエンジンモードと同様にJ2EEサーバモードでもトランザクション管理なしでデータベースを使用する場合に,DABroker Libraryを使用するときは,次のDB Connectorを選択します。

なお,DBConnector_DABJ_CP.rar以外のDB Connectorについては,マニュアル「アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)」の「3.6.1 DB Connectorによる接続の概要」を参照してください。