Apcoordinator ユーザーズガイド
目次 前ページ次ページ

第2部 Apcoordinatorコアの機能> 第4章 APIを使ったプログラミング> 4.8 トランザクションの管理

4.8.3 トランザクション管理機能とビジネスクラス再試行機能の併用

トランザクション管理機能とビジネスクラス再試行機能の両方を使用するには、com.fujitsu.uji.transaction.TransactionHandlerインタフェースとcom.fujitsu.uji.RetriableHandlerインタフェースを実装してビジネスクラスを作成します。 簡単に作成したい場合は、com.fujitsu.uji.transaction.RetriableTransactionHandlerクラスを継承して作成します。RetriableTransactionHandlerクラスはTransactionHandlerインタフェースとRetriableHandlerインタフェースの簡単な実装を提供します。

ビジネスクラス設定ファイル(handlerconfig.xml)には、 以下の例のように、トランザクション管理機能とビジネスクラス再試行機能の両方に関する設定を記述できます。


<?xml version="1.0" encoding="iso-2022-jp"?>
<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">
    <method name="doUpdate">
      <transaction enabled="true"/>     <!-- (1) -->
      <retry enabled="true" retryInterval="200" retryCount="1" />     <!-- (2) -->
    </method>
    <method name="search">
      <retry enabled="true" retryInterval="200" retryCount="1" />     <!-- (3) -->
    </method>
    <method name="*">
      <transaction enabled="false"/>    <!-- (4) -->
      <retry enabled="false"/>          <!-- (5) -->
    </method>
  </handler>

</handlerConfig>

この記述例による設定内容は以下のとおりです。

トランザクション管理機能とビジネスクラス再試行機能を併用した場合、 ビジネスクラス再試行機能とトランザクション管理機能が連動して動作します。 再試行が行われる場合は、再試行直前にトランザクションがロールバックされ、再度トランザクションが開始されます。

また、ビジネスクラスのメソッドは以下の順序で呼び出されます。再試行される場合は、afterTransactionCompletionまで実行された後に再試行され、beforeTransactionBeginから再度実行されます。

ビジネスクラス再試行機能と併用した場合のメソッドの呼び出し順序

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

preprocessbeforeTransactionBegin、トランザクション開始処理で発生した例外は、handleExceptionに通知されません。

preprocessbeforeTransactionBegin、トランザクション開始処理で例外が発生した場合、後続の処理の一部はスキップされます。例外の発生個所とスキップされる処理の関係を以下の表に示します。

例外を発生する処理後続の処理の実行有無
before
Transaction
Begin
トランザクション開始 ビジネスメソッド before
Transaction
Completion
before
Method
Completion
トランザクション終了 after
Transaction
Completion
handle
Exception (*1)
preprocess × × × × × × × × (*2)
beforeTransactionBegin × × × × × ×
トランザクション開始 × × ×
(*1) ビジネスクラスがPostprocessorインタフェースを実装している場合に呼び出されます。
(*2) handleException, postprocessのどちらも呼び出されません。

目次 前ページ次ページ

All Rights Reserved, Copyright © 富士通株式会社 2000-2005