ページの先頭行へ戻る
Interstage Business Application Server アプリケーション開発ガイド
FUJITSU Software

8.2 トランザクションとリトライ制御

データベース操作を伴う処理では、処理結果により、トランザクションの完了操作を行う必要があります。また、エラー終了した場合には、業務処理の再実行が必要な場合があります。同期アプリケーション連携実行基盤では、これらの操作を自動的に行う機能を提供します。
データベースに関連する機能については、トランザクション完了操作のほかに、コネクションプールやコネクションの再接続などのサービスを提供しています。

トランザクション制御

アプリケーション連携実行基盤でコネクションの管理を行います。アプリケーション連携実行基盤が管理するコネクションは、処理の終了コードにより、コミットやロールバックといったトランザクションの完了を自動的に行います。アプリケーション連携実行基盤が管理するコネクションを用いて、データベースの操作を行うことで、トランザクションの完了操作を意識することなく業務ロジックの作成に専念することが可能となります。
ただし、コンテナのトランザクション制御を使用しない場合、サーバアプリケーションで独自にコネクションを持つことも可能です。

リトライ制御

リトライ処理機能は処理結果情報に2(異常終了)または3(強制リトライ)が設定されていた場合にリトライの定義に従ってリトライ処理を行います。リトライ実行時のリクエストデータは初回呼出し時のデータが渡されます。

リトライ制御では以下の2通りの制御が可能です。

それぞれ以下の条件でアプリケーションの呼出しがリトライされます。

リトライ種別

リトライ条件

エラーコードによるリトライ制御

  • リクエストに対する処理において、最終的な処理結果情報(注1)に2(異常終了)が設定されていた場合、かつ

  • パラメタ“例外情報”のエラーコードが、アプリケーション動作定義で定義されたリトライするエラーコードに含まれている場合(注2)

処理結果情報によるリトライ制御
(強制リトライ)

リクエストに対する処理において、前処理/業務処理/後処理/エラー処理の処理結果情報に3(強制リトライ)が設定されていた場合(注3)(注4)

1)以下の処理結果情報でリトライが決定します。

2)アプリケーション動作定義にリトライ条件となるエラーコードが定義されていない場合はすべてのエラーに対してリトライが適用されます。

3)強制リトライの場合は、アプリケーション動作定義に定義されているenabledとエラーコードは無視されますが、リトライ間隔とリトライ最大回数は有効です。アプリケーション動作定義にサーバアプリケーションの定義がない場合は、省略値を使用してリトライを行います。

4)前処理/業務処理/後処理で3(強制リトライ)が設定された場合は、エラー処理は呼ばれません。

リトライ動作

リトライ処理における呼出しシーケンスは、以下のようになります。

“0”(正常終了)、“1”(正常終了)、“3”(強制リトライ)の判定は、各処理の処理結果情報の値で判定されます。
各処理結果情報の詳細は“Interstage Business Application Server リファレンス”の“出口インタフェース”を参照してください。

注意

  • 後処理が定義されていない場合は、業務処理の処理結果情報に応じてトランザクションがコミット/ロールバックされます。

  • エラー処理が定義されていない場合は、トランザクションがロールバックされエラーコードのチェックが行われます。

  • DBの設定がない場合は、コミット/ロールバックおよびトランザクション後メッセージ編集処理は呼ばれません。

  • トランザクション後メッセージ編集処理が定義されていない場合、トランザクションのコミットに失敗するとクライアントへFSP_INTS-BAS_AP21408のエラーが返却されます。

アプリケーション動作定義

アプリケーション動作定義はサーバアプリケーションごとのリトライの定義を記述するXMLファイルです。定義ファイルは、アプリケーションの配備時に他の定義ファイルと合わせて配備します。

以下に定義例を示します。

<?xml version="1.0" encoding="UTF-8"?>
<handlerDef
    xmlns="http://interstage.fujitsu.com/schemas/apfw/handlerDef"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://interstage.fujitsu.com/schemas/apfw/handlerDef
                        http://interstage.fujitsu.com/schemas/apfw/handlerDef.xsd">

    <config>
        <version>1.0</version>
    </config>

    <!-- Setting when each Application is defined -->
    <target name="doUpdate">
      <retry enabled="true" retryInterval="200" retryCount="1" />
    </target>

    <!-- Setting of Default -->
    <target name="*">
      <retry enabled="true" retryInterval="200" retryCount="1">
          <errcodes>
              <errcode>10:100</errcode>
              <errcode>1000</errcode>
              <errcode>1001</errcode>
          </errcodes>
      </retry>
    </target>

</handlerDef>

以下のディレクトリにサンプルが格納されています。

/opt/FJSVibs/sample/handlerDef/handlerDef.xml

[Interstageのインストールディレクトリ]\BAS\sample\handlerDef\handlerDef.xml

アプリケーション動作定義ファイルの詳細は“Interstage Business Application Server リファレンス”の“アプリケーション動作定義ファイルリファレンス”を参照してください。

ポイント

Interstage Studioでは、コンテキストメニューの[検証]を選択することによりアプリケーション動作定義のXMLタグの構成をチェックすることができます。
検証の詳細については、“Interstage Studio ユーザーズガイド”を参照してください。なお、[検証]では設定値のチェックは行なえません。