Cosminexus 機能解説

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

15.3.3 リソースに接続するバッチアプリケーションの注意

リソースに接続するバッチアプリケーションを作成するときには,次のことに注意してください。

●バッチアプリケーション実行時の注意

バッチアプリケーション実行中には,DB Connectorの停止や設定変更をしないでください。DB Connectorの停止や設定変更は,バッチアプリケーションが終了してから実施します。

●コネクションのクローズ

バッチサーバでは,コネクションの自動クローズは実行されません。このため,使用したコネクションは必ずクローズするよう,アプリケーションに実装してください。

●JTAのローカルトランザクションの使用

バッチアプリケーションの中で,JTAのローカルトランザクションを使用できます。JTAのローカルトランザクションは,次に示す方法で使用します。

  1. 次のどちらかの方法でUserTransactionオブジェクトを取得します。
    • ネーミングサービスからルックアップして取得する。
      ルックアップ名:HITACHI_EJB/SERVERS/<サーバ名称>/SERVICES/UserTransaction
    • com.hitachi.software.ejb.ejbclient.UserTransactionFactoryクラスのgetUserTransactionメソッドを使用して取得する。
  2. UserTransactionオブジェクトのbegin()メソッドを呼び出して,トランザクションを開始します。
  3. リソースに接続します。
  4. UserTransactionオブジェクトのcommit()またはrollback()を呼び出して,トランザクションを決着します。

UserTransactionインタフェースの使用方法の詳細については,「9.17.2 UserTransactionインタフェースを使用する場合の処理概要と留意点」を参照してください。

●トランザクションの決着

バッチサーバではトランザクションの自動決着機能をサポートしていません。開始したトランザクション(javax.transaction.UserTransaction)は,バッチアプリケーション内で必ず決着処理を実施してください。

トランザクションの決着をしないでバッチアプリケーションを終了すると,次のバッチアプリケーションの実行でトランザクションを開始するときに(javax.transaction.UserTransaction#begin()),次のエラーが発生します。

javax.transaction.NotSupportedException: KDJE31009-E No nested transaction is supported.

トランザクションの決着処理をしないでバッチアプリケーションを終了した場合,バッチサーバを再起動してトランザクションが使用できない状態を回復してください。