ページの先頭行へ戻る
 Apcoordinatorユーザーズガイド

4.6.2 ビジネスクラスの作成

ビジネスクラス再試行機能を使用するには、com.fujitsu.uji.RetriableHandler インタフェースを実装してビジネスクラスを作成します。 簡単に作成するにはcom.fujitsu.uji.GenericRetriableHandlerクラスを継承して作成します。GenericRetriableHandlerクラスはRetriableHandlerインタフェースの簡単な実装を提供します。

デフォルトでは再試行に関する設定は以下のとおりになります。

コマンドマップで指定したメソッドの終了後に再試行の有無を決定する

コマンドマップで指定したメソッドの終了後に、ビジネスクラスやセションクラスの持つデータを参照して再試行の有無を決定したい場合は、ビジネスクラスの beforeMethodCompletionメソッドにその処理を記述します。 beforeMethodCompletionメソッドは、コマンドマップで指定したメソッドの終了後に呼び出されます。

beforeMethodCompletionメソッドで再試行を指示するには、com.fujitsu.uji.DispatchContextクラスのsetRetryメソッドを呼び出します。引数にはtrueを指定します。すでに予定されている再試行を取り消すには、引数にfalseを指定してsetRetryメソッドを呼び出します。

再試行が予定されているかどうかは、DispatchContextクラスのgetRetryメソッドで取得できます。例外の発生などにより再試行の条件が満たされている場合は、再試行が予定されています。この場合、getRetryメソッドがtrueを返します。

ビジネスメソッドごとに再試行の動作を設定する

再試行の有無、再試行間隔、再試行最大回数をビジネスメソッドごとに指定するには、設定ファイルフォルダにビジネスクラス設定ファイル(handlerconfig.xml)を作成して設定を記述します。

以下は、ビジネスクラス設定ファイル(handlerconfig.xml)の記述例です。

<?xml version="1.0" encoding="Shift_JIS"?>
<handlerConfig
    xmlns=http://interstage.fujitsu.com/schemas/uji/handlerConfig
    xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
    xsi:schemaLocation="http://interstage.fujitsu.com/schemas/uji/handlerConfig
                        http://interstage.fujitsu.com/schemas/uji/handlerconfig.xsd">
  <config>
    <version>6.0</version>
  </config>

  <handler name="sample.SampleHandler"> <!-- (1) -->
    <method name="doUpdate">            <!-- (2) -->
      <retry enabled="true" retryInterval="200" retryCount="1" />     <!-- (3) -->
    </method>
    <method name="*">                   <!-- (4) -->
      <retry enabled="false"/>          <!-- (5) -->
    </method>
  </handler>

</handlerConfig>

上記の記述例では、sample.SampleHandlerクラスのdoUpdateメソッドではビジネスクラス再試行機能が有効で、その他のビジネスメソッドでは無効になります。

注意

再試行間隔の精度はご使用になるシステムに依存します。 10ミリ秒より高い精度による指定はシステムによっては有効にならない場合があります。

メソッドの実行順序

ビジネスクラス再試行機能を使用した場合、ビジネスクラスのメソッドは以下の順序で呼び出されます。

ビジネスクラスがcom.fujitsu.uji.Postprocessorインタフェースを実装している場合は、postprocessメソッドとhandleExceptionメソッドのどちらか一方が呼び出されます。handleExceptionが呼ばれるのは以下の場合です。それ以外はpostprocessが呼び出されます。

beforeMethodCompletionで発生した例外は、handleExceptionには通知されません。

注意

ビジネスクラスがRetriableHandlerインタフェースを実装していても、ビジネスクラス設定ファイルでビジネスクラス再試行機能が無効に設定されている場合は、beforeMethodCompletionメソッドは呼び出されません。