Cosminexus V9 アプリケーションサーバ 機能解説 拡張編
ここでは,リソースに接続するバッチアプリケーションの作成方法について説明します。新規にバッチアプリケーションを作成する場合と,既存のバッチアプリケーションから移行する場合について説明します。
新規にバッチアプリケーションを作成する場合,リソースへの接続にはDB Connectorを使用することをお勧めします。DB Connectorとは,アプリケーションサーバで提供するデータベースに接続するためのリソースアダプタです。DB Connectorを使用したリソースに接続する方法を次に示します。
<connector-runtime>
:
<resource-external-property>
<optional-name>DB Connectorの別名</optional-name>
</resource-external-property>
</connector-runtime>
|
String dbName = <DB Connectorの別名>;
InitialContext ic = new InitialContext();
DataSource ds = (DataSource) ic.lookup(dbName);
Connection con = ds.getConnection();
|
既存のバッチアプリケーション(Javaアプリケーション)から移行する場合,リソースに接続する方法は次の2種類があります。
DB Connectorを使用しない場合,バッチアプリケーションのコードを修正する必要はありません。ただし,DB Connectorが提供する機能およびGC制御機能は利用できません。ここでは,リソースの接続方法をDB Connectorに変更する場合の移行方法と,JDBCドライバを使用する場合(接続方法を変更しない場合)の移行方法を説明します。
DB Connectorを使用する場合,DB Connectorからjava.sql.Connectionを取得するようバッチアプリケーションを変更してください。変更方法を次に示します。
<connector-runtime>
:
<resource-external-property>
<optional-name>DB Connectorの別名</optional-name>
</resource-external-property>
</connector-runtime>
|
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con = DriverManager.getConnection(uri,"user","pass");
con.setAutoCommit(false);
Statement stmt = con.createStatement();
stmt.executeBatch();
con.commit();
|
String dbName = <DB Connectorの別名> InitialContext ic = new InitialContext(); DataSource ds = (DataSource)ic.lookup(dbName); Connection con = ds.getConnection(); con.setAutoCommit(false); Statement stmt = con.createStatement(); stmt.executeBatch(); con.commit(); |
DB Connectorから取得したjava.sql.Connectionは,JDBCドライバのjava.sql.Connectionと同様に使用できます。このため,java.sql.Connectionの取得方法だけを変更すれば,ほかのバッチアプリケーションのコードを変更する必要はありません。
JDBCドライバを使用する場合,バッチアプリケーションのコードを修正する必要はありません。ただし,使用するJDBCドライバのライブラリをバッチサーバのクラスパスに追加する必要があります。詳細は,使用するJDBCドライバの設定に従ってください。次に,JDBCドライバのライブラリをバッチサーバのクラスパスに追加する方法を示します。バッチサーバのクラスパスに追加するには,usrconf.cfg(バッチサーバ用オプション定義ファイル)に次の記述を追加します。
add.class.path=<JDBCドライバのライブラリのフルパス>
なお,usrconf.cfg(バッチサーバ用オプション定義ファイル)については,マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「3.2 usrconf.cfg(バッチサーバ用オプション定義ファイル)」を参照してください。
リソースに接続するバッチアプリケーションを作成するときには,次のことに注意してください。
バッチアプリケーション実行中には,DB Connectorの停止や設定変更をしないでください。DB Connectorの停止や設定変更は,バッチアプリケーションが終了してから実施します。
バッチサーバでは,コネクションの自動クローズは実行されません。このため,使用したコネクションは必ずクローズするよう,アプリケーションに実装してください。
バッチアプリケーションの中で,JTAのローカルトランザクションを使用できます。JTAのローカルトランザクションは,次に示す方法で使用します。
UserTransactionインタフェースの使用方法の詳細については,マニュアル「アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)」の「3.4.8 UserTransactionインタフェースを使用する場合の処理概要と留意点」を参照してください。
UserTransaction使用時の注意事項を次に示します。
バッチアプリケーション内でトランザクションを開始した場合は,バッチアプリケーション内で必ず決着処理を実施してください。トランザクションの決着処理を実施しないでバッチアプリケーションを終了すると,タイムアウト時間が経過したあとにトランザクションがロールバックされます。
この場合,簡易構築定義ファイルのejbserver.batch.application.exit.enabledパラメタの指定値によって,次に実行するバッチアプリケーションでトランザクションを開始する時(javax.transaction.UserTransaction#begin())の挙動が異なります。
ejbserver.batch.application.exit.enabledパラメタの設定については,「2.3.10 実行環境での設定(バッチサーバの設定)」を参照してください。
All Rights Reserved. Copyright (C) 2012, 2015, Hitachi, Ltd.