前のトピック: JDBC次のトピック: TCP


JDBC の仮想化

このセクションでは、JDBC ベースのデータベース トラフィックを仮想化するために、VSE フレームワークを使用する準備を行う方法の詳細について説明します。 JDBC の設定については、「データベース シミュレータのインストール」でも説明しています。 このセクションでは、ドライバ ベース JDBC 仮想化を組み合わせるさまざまな方法、およびサポートされる設定オプションについて説明します。 このセクションでは、特定のアプリケーション コンテナに対して設定を実装する方法については説明していません。

注: JDBC 仮想化は、Java 1.6 でのみ動作します。Java 1.5 では動作しません。

 

システム レベル プロパティ

以下のいずれかの方法で以下のプロパティを指定できます。

プロパティが両方の場所に存在する場合、システム プロパティが設定ファイルよりも優先されます。

lisa.jdbc.sim.require.remote

コマンドを処理する前に、ドライバが VSE への接続を待機するかどうかを決定します。

デフォルト: false

lisa.jdbc.hijack.drivermanager

ドライバが、このアプリケーションからのデータベース接続をすべて引き継ごうとするかどうかを決定します。

デフォルト: false

lisa.jdbc.sim.port

デフォルトのリスン ポートを定義します。

デフォルト: 2999

lisa.log.level

デフォルトのログ レベルを指定します。

値

デフォルト: WARN

lisa.log.target

ログを書き込む場所を指定します。

値

デフォルト: stderr

 

VSE ドライバ(スタンドアロン)

テスト中のシステムは、VSE ドライバを直接使用できます。または、VSE ドライバを Apache BasicDataSource などのデータ ソースでラップすることができます。 このような場合、設定(ユーザ名とパスワード以外)は URL を介して渡されます。 ドライバ プロパティには以下のものが含まれます。

URL

基盤となるドライバに渡される実際の URL を指定します。 この URL は、最後のエレメントとして渡す必要があります。

State

ドライバの初期状態を指定します。

値

JdbcSimPort

VSE からの接続をリスンするポートを指定します。 この値は、システム レベルのプロパティを上書きします。

Driver

使用する実際のドライバのクラス名を指定します。

User
Password

ドライバのクラス名として、com.itko.lisa.vse.jdbc.driver.Driver を指定します。

以下の例は URL の形式を示しています。 ドライバと URL 以外はすべてオプションです。

jdbc:lisasim:driver=<実際のドライバ クラス>;state=<初期状態>;jdbcSimPort=<開始点>;url=<実際の URL>

注: URL エレメントは、最後に指定する必要があります。 「url=」以降は、すべて変更されることなく基盤となるドライバに渡されます。 DevTest は、実際の URL に埋め込むことにより、基盤となるドライバに追加の情報を渡すことをサポートしています。

たとえば、Derby 接続には以下の URL が適切です。

jdbc:lisasim:driver=org.apache.derby.jdbc.ClientDriver;state=watch;jdbcSimPort=4000;url=jdbc:derby://localhost:1527/sample;create=true

この URL は、以下のことを VSE ドライバに指示します。

 

ドライバをラップする VSE データソース

ドライバをラップする VSE データソースは、VSE ドライバを直接使用するよりも、アプリケーション コンテナに対する一般的な設定の場合があります。 VSE は、実際のドライバをラップするデータ ソースを提供します。 ほとんどのアプリケーション コンテナは、データ ソースのプロパティを直接指定するメカニズムを提供しています。

ドライバのクラス名として、com.itko.lisa.vse.jdbc.driver.VSEDataSource を指定します。

 

データソース プロパティ

Driver

使用する実際のドライバの名前を指定します(通常の設定)。

URL

接続する実際の URL を指定します(jdbc:lisasim で開始することはできません)。

User
Password
JdbcSimPort

VSE からの接続をリスンするポートを指定します。 この値は、システム レベルのプロパティを上書きします。

CustomProperties

セミコロンで区切られた「名前 = 値」ペアのリストを定義します。 これらのプロパティが存在する場合、解析され、ラップされたデータ ソースに委任されます。 最初の文字が英数字でない場合、その文字がセミコロンの代わりに区切り文字として使用されます。

 

データ ソースをラップする VSE データ ソース

アプリケーション コンテナがドライバを Class.forName() で 直接インスタンス化するのを許可しない場合、データ ソースのラップは一般的な設定ではありません。 これを使用するには、driver=<実際のドライバのクラス名>(oracle.jdbc.OracleDriver など)を指定する代わりに、datasource=<実際のデータ ソースのクラス名> (oracle.jdbc.pool.OracleDataSource など)を指定します。

ドライバのクラス名として、com.itko.lisa.vse.jdbc.driver.VSEDataSource を指定します。

 

複数のエンドポイントのサポート

1 つのアプリケーションに仮想化する JDBC 接続が複数存在する場合(または、1 台のアプリケーション サーバに、仮想化する別々の JDBC 接続を持つ複数のアプリケーションが存在する場合)、各接続に対して個別の JdbcSimPort を指定します。 このエンドポイントは、VSE データ ソースのプロパティ、またはドライバの URL 上のパラメータのいずれかとして指定できます。

例:

アプリケーションが 2 つの JDBC 接続を使用しており、その両方を仮想化すると仮定します。 また、アプリケーションが、ドライバを直接使用すると仮定します。

driver や URL など、それぞれに基盤となる適切なパラメータを付けて、各接続に com.itko.lisa.vse.jdbc.driver.Driver を指定します。 最初の接続に jdbcSimPort=3000 を指定し、2 番目に jdbcSimPort=3001 を使用することもできます。 その場合の設定は以下のようになります。

connection1.url=jdbc:lisasim:driver=org.apache.derby.jdbc.ClientDriver;jdbcSimPort=3000;url=jdbc:derby://localhost:1527/sample;create=true
connection2.url=jdbc:lisasim:driver=org.apache.derby.jdbc.ClientDriver;jdbcSimPort=3001;url=jdbc:derby://localhost:1527/sample2;create=true

引き続き個別に記録する必要がありますが、両方のサービスを同時に展開して、個別に開始および停止できます。