アプリケーション・サーバーに SQLJ アプリケーションをインストールする前に
db2sqljcustomize ツールを使用して SQLJ プロファイルをカスタマイズして、バインドします。
始める前に
このタスクを実行するには、SQLJ アプリケーションがデプロイ済みであることが必要ですが、
アプリケーション・サーバーにアプリケーションをインストールしてはなりません。
アプリケーション・サーバーにアプリケーションをインストール済みである場合は、
プロファイルのカスタマイズ後にアプリケーションを再インストールする必要があります。また、SQLJ
アプリケーションの直列化プロファイルも必要です。
コンテナー管理パーシスタンスを使用する SQLJ アプリケーションの場合は、次の 2 つの方法でアプリケーションをデプロイできます。
- アプリケーション・サーバーに SQLJ アプリケーションをデプロイします。詳しくは、
コンテナー管理パーシスタンス (CMP) を使用する SQLJ アプリケーションのデプロイに関するトピックを参照してください。
- EJB デプロイメント・ツールを使用して SQLJ アプリケーションをデプロイします。コンテナー管理パーシスタンス (CMP) を使用する SQLJ アプリケーションの EJB デプロイメント・ツールによる
デプロイに関するトピックを参照してください。
Bean 管理パーシスタンスを使用する SQLJ アプリケーションの場合は、Bean 管理パーシスタンス、サーブレット、
またはセッション Bean を使用する SQLJ アプリケーションのデプロイに関するトピックを参照してください。
このタスクについて
アプリケーション・サーバーで SQLJ アプリケーションを利用するには、SQLJ プロファイルをカスタマイズする必要があります。
カスタマイズ・プロセスでは、DB2® データベースに固有の情報を使用してプロファイルを拡張します。実行時にデータベースでこの情報が使用されます。デフォルトでは、分離レベルごとに
1 つずつ、計 4 つの DB2 パッケージがデータベースに作成されます。
アプリケーション・サーバーでは、管理コンソールまたはスクリプトによる SQLJ プロファイルのカスタマイズおよびバインドをサポートしています。
- 管理コンソールのサポートについては、SQLJ (Structured Query Language in Java™) アプリケーション用プロファイルのカスタマイズおよびバインディングに関するトピックを参照してください。
- スクリプトのサポートについては、AdminTask オブジェクトのアプリケーション管理コマンド・グループに関するトピックを参照してください。
手順
- データ・アクセス・アプリケーションのデプロイに関するトピックの説明に従って、必要なデータベース表が存在していることを確認します。
- アプリケーションをインストールした環境に
直列化プロファイルを転送します。あるいは、Java jar コマンドを使用して、
インストール済みの EAR ディレクトリーの JAR ファイルから直列化プロファイルを抽出します。
- 環境のクラスパスに SQLJ プロファイルのロケーションとアプリケーションの JAR ファイルを追加します。
- データ・アクセス・アプリケーションのデプロイに関するトピックの説明に従って、必要なデータベース表が存在していることを確認します。
- オプション: アプリケーションがクラスター環境以外で実行されている場合は、
Ant スクリプトを使用するとカスタマイズをより簡単に実行することができます。 EJB デプロイメント・ツールを使用して EAR ファイルに対してバッチの SQLJ カスタマイズを実行すると、
このツールにより、application_name.ear.xml という名前の Ant スクリプトが生成されます。
このスクリプト・ファイルを使用して、関連付けられた EAR ファイルのすべてのエンタープライズ Bean JAR ファイルにある直列化プロファイルに対して、DB2
カスタマイザー・プログラムを実行することができます。このスクリプトは各エンタープライズ Bean の JAR ファイルを直列化プロファイルで更新し、
既存の EAR ファイル内の JAR ファイルを変更後のものに置き換えます。
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
ツールは以下のとおりです。
- ejbdeploy.sqlj.properties 内にあるデータベース URL の値、
およびデータベース・ユーザーとパスワード・プロパティーの値を変更します。 このファイルは、ejbdeploy
コマンドによって生成されるすべての Ant スクリプトで共通するものです。
ejbdeploy.sqlj.properties スクリプトでは、以下についてのグローバル・プロパティーを定義します。
- データベース URL - db.url
- ユーザー - db.user
- パスワード - db.password
Ant スクリプトは、
直列化プロファイル内の URL、ユーザー、およびパスワード・プロパティーを使用して
このプロファイルをカスタマイズします。デフォルトにより、直列化プロファイルのプロパティーは、グローバル・プロパティーから作成されます。
- properties ターゲットを指定して、Ant スクリプトを実行します。 以下に例を示します。
ws_ant -buildfile application_name.ear.xml properties
このスクリプトは、プロパティー・ファイル
application_name.ear.properties を作成します。
application_name.ear.properties ファイルには、
EAR
ファイルの各直列化プロファイルに対応するパッケージのデフォルト名を指定するプロパティーが含まれています。以下はサンプルのプロパティー・ファイルです。
url.MyEJB1.jar.DB2UDBNT_V8_1=jdbc:db2://localhost:50000/MyDB1
user.MyEJB1.jar.DB2UDBNT_V8_1=dbuser
password.MyEJB1.jar.DB2UDBNT_V8_1=dbpassword
pkg.MyEJB1.jar.DB2UDBNT_V8_1=TEST
url.MyEJB2.jar.DB2UDBNT_V8_1=jdbc:db2://localhost:50000/MyDB2
user.MyEJB2.jar.DB2UDBNT_V8_1=dbuser
password.MyEJB2.jar.DB2UDBNT_V8_1=dbpassword
pkg.MyEJB2.jar.DB2UDBNT_V8_1=WORK
- DB2 Control Center
を使用して、データベースにインストールされているパッケージを識別します。 DB2 SQLJ カスタマイザーでは、以下の形式のタイプ
4 データベース URL が必要になります。
jdbc:db2://host-name:port/database-name
また、ユーザーおよびパスワードも必要になります。
ポートの値は、DB2 のインストール時に変更していなければ
50000 になります。
- 各カスタマイズ・プロファイルの名前がデータベース内の既存パッケージ名と競合しないように、
スクリプト・ファイルで使用するそれぞれの名前を変更してください。 デフォルトでは、さまざまな EAR ファイル用に生成される複数の Ant
スクリプトで同じパッケージ名が使用されるので、
それらの名前を変更しない限り、スクリプトによって既存のパッケージが上書きされます。
パッケージが上書きされると、実行時エラーの原因になります。
DB2 はパッケージ名の最初の 7 文字を使用します。
DB2 カスタマイザーは、この名前を使用してデータベースに 4 つのパッケージを作成します。
例えば、TEST という名前を指定した場合、DB2
カスタマイザーは TEST1、TEST2、TEST3、および TEST4 という名前のパッケージを作成します。
- Ant スクリプトを実行します。 Ant スクリプトは、オリジナルの EAR ファイルを変更された直列化プロファイルで更新します。
トラブルの回避 (Avoid trouble): クラスパスに db2jcc.jar があることを確認します。このファイルは、DB2 V8 FixPak1 がインストールされたときに、クラスパス環境変数に追加されているはずです。
gotcha
Ant コマンドの例は、以下のとおりです。ws_ant -Dwork.dir=tmp
-Dscript.property.file=other.properties
-buildfile application_name.ear.xml
各部の意味は、次のとおりです。- -buildfile では、作成する XML ファイルを指定します。
- -Dscript.property.file では、さまざまなプロパティー・ファイルを指定します。このパラメーターはオプションです。Ant スクリプトで application_name.ear.properties
以外のファイルを使用する場合は、
スクリプトの実行時に Dscript.property.file プロパティーを指定してください。
- -Dwork.dir ではスクリプトの一時作業ディレクトリーを指定します。スクリプトはこのディレクトリーの中にファイルおよびサブディレクトリーを作成し、作業後にはそれらを削除します。
作業ディレクトリーに、スクリプトが使用するものと同じ名前のファイルやディレクトリーが含まれていると、
それらはスクリプトにより消去または上書きされます。
このスクリプトは、作業ディレクトリーとして tmp という名前のディレクトリーを作成して使用します。
- アプリケーション・サーバーでのアプリケーションのインストールに進みます。
- db2sqljcustomize ツールを実行して、各エンタープライズ Bean
の JAR ファイルに対応する SQLJ プロファイルをカスタマイズします。 デプロイメント・コードを生成すると、
アプリケーションに固有の直列化プロファイル (拡張子 .ser を持つファイル) が作成されます。
これらのプロファイルは、SQLJ ファイルと同じディレクトリーに存在し、
使用する前にその環境に合うようカスタマイズする必要があります。
直列化プロファイルに対して DB2 SQLJ カスタマイザーを実行する場合、
実行時に DB2 で使用されるデータベースに静的 SQL を作成します。
このカスタマイズ・フェーズでは静的 SQL を含むデータベース・パッケージを、それぞれの分離レベルごとに 1 つずつ、
計 4 つ作成します。
- オプション: SQLJ カスタマイザー・ツールの使用により、
アプリケーションのデータ・ソース接続のコンテキストのキャッシングを使用可能にすることを検討してください。 DB2 V8.1 フィックスパック 6 では、新規キャッシング・オプションとして、db2optimize という db2sqljcustomize ツールを提供しています。アプリケーションがデフォルト・コンテキストではなく、明示接続コンテキストを使用する場合に、このオプションを実行することができます。
トラブルの回避 (Avoid trouble): - SQLJ コンテキスト・キャッシングのサポートには、IBM® JCC Driver を備える DB2 または APAR PQ87786 適用の DB2 Universal JDBC Driver バージョン 2.2 以降が必要です。
- トランザクション境界を介して接続をキャッシュするアプリケーションまたは BMP Bean のコンテキスト・キャッシングを使用可能にする場合は、共有可能な接続を使用することはできません。
db2optimize オプションを呼び出す場合、またはオブジェクトが閉じたという例外が発生する場合、
オブジェクト取得/使用/クローズ・パターンの接続方法を使用します。
以下のコードは、コンテキスト・キャッシングの間違った接続方法を示す例です。
utx.begin();
cons =ds.getConnection(
request.getParameter("db.user"),
request.getParameter("db.password"));
cmctx1 = new CM_context(cons);
#sql [cmctx1] {DELETE FROM cmtest WHERE id=1};
utx.commit();
//The next statement verifies the result:
#sql [cmctx1] cursor1 = {SELECT id, name FROM cmtest WHERE id=1};
この場合、
Select ステートメントによって、オブジェクトが閉じたという例外を示します。
例外が発生しないように、トランザクションをコミットする前に、接続を閉じます。
それから、新規接続および新規コンテキストを取得し、「Select」ステートメントを実行します。
gotcha
以下のサンプル・コードは、直列化プロファイルに対してオプションを実行する正しい構文を表しています。sqlj -db2optimize SQLJTransactionTest.sqlj
db2sqljcustomize -url jdbc:db2://localhost:50000/dbname -user USER_NAME -password PASSWORD
SQLJTransactionTest_SJProfile0.ser
- db2sqljcustomize ツールを実行して、SQLJ プロファイルをカスタマイズします。 db2sqljcustomize コマンドを正常に実行した後、カスタマイズしたプロファイルは、
コマンドを実行したディレクトリーに配置されます。カスタマイズしていない直列化プロファイルを含むディレクトリーから db2sqljcustomize コマンドを実行する場合、
カスタマイズしたバージョンにより、同じファイル名を持つ前のバージョンが上書きされます。
db2sqljcustomize コマンドを実行するには、以下の構文を推奨します。
db2sqljcustomize -url JDBC_URL -user USER_NAME -password PASSWORD [-rootpkgname PACKAGE_NAME] SERIALIZED_PROFILE1 SERIALIZED_PROFILE2 ...
各部の意味は、次のとおりです。
- JDBC_URL は、テーブルが入っている DB2
システムにアクセスするために使用する JDBC の URL です。
- USER_NAME は、テーブルが入っている DB2 システムで有効なユーザー名です。
- PASSWORD は、指定されたユーザー名のパスワードです。
- PACKAGE_NAME は、7 文字以内の有効な区分データ・セット (PDS) メンバー名です。プロファイル・カスタマイザーにより作成された 4 つの各パッケージは、この名前を使用して開始し、1 から 4 の番号が付加されます。直列化プロファイルを 1 つだけカスタマイズする場合、この値は、直列化プロファイル名の縮小名をデフォルトにとり、-rootpkgname パラメーターは必要としません。同じコマンドで、複数の直列化プロファイルをカスタマイズする場合、
デフォルト値はなく、-rootpkgname パラメーターが必要となります。
- SERIALIZED_PROFILE# は、カスタマイズしている直列化プロファイルの名前です。
- 同じコマンドで複数の直列化プロファイルをカスタマイズする場合、
複数のファイルをスペースで区切ってリストします。
- また、同じコマンドで複数の直列化プロファイルをカスタマイズする場合、-rootpkgname
パラメーターを指定することができます。
注: 以下のオプションを使用すると、カスタマイズ・プロセスをさらに制御できます。
- -automaticbind yes は、直列化プロファイルに対して DB2 SQLJ カスタマイザーを実行し、
実行時にデータベースで使用されるデータベース内に静的 SQL を作成することを指定します。
このカスタマイズ・フェーズでは静的 SQL を含むデータベース・パッケージを、それぞれの分離レベルごとに 1 つずつ、
計 4 つ作成します。
- -onlinecheck NO and -bindoptions "VALIDATE RUN" は、次
のように、プロファイルのカスタマイズ時のエラーを迂回して、カスタマイズが成功するように設定を指定します。
- 直列化プロファイルでエンタープライズ Bean の JAR ファイルを更新します。
- jar コマンドを使用して、JAR ファイル内の直列化プロファイルを、カスタマイズしたプロファイルで置き換えます。
トラブルの回避 (Avoid trouble): カスタマイズしたファイルは、
アプリケーション・クラスパスの一部であるロケーションに配置する必要があり、
また、これらは JAR ファイル内のカスタマイズしていない直列化プロファイルの前に存在している必要があります。
JAR ファイル内の直列化プロファイルを置き換える場合は、
プロファイルが存在するディレクトリー構造を保持してください。
gotcha
- エンタープライズ Bean、サーブレット、および直列化プロファイルの
JAR ファイルをエンタープライズ・アーカイブ (EAR) ファイルにパッケージ化します。
- アプリケーション・サーバーにアプリケーションをインストールします。