Interstage Application Server J2EE ユーザーズガイド
目次 索引 前ページ次ページ

第3部 EJB編> 第28章 Bean共通編> 28.3 トランザクションを使用したアプリケーション> 28.3.1 EJBサービスのトランザクション機能を使用する

28.3.1.3 EJBサービスが提供するトランザクション制御の例外処理

 EJBサービスが提供するトランザクションで、トランザクション管理種別を“Container”に指定した場合の例外処理と、SessionSynchronizationインタフェースを使用した場合の例外処理について説明します。

 EJBサービスが提供するトランザクションの詳細は、“トランザクション管理種別とトランザクション属性”を参照してください。

 以下に、各属性を指定した場合の例外処理について示します。

■ トランザクション管理種別を“Container”に指定した場合の例外処理

トランザクション属

例外処理の内容

ユーザ例外発生時

システム例外発生時

Mandatory

呼出し元に、メソッド内で返却されたユーザ例外が返却されます。

トランザクションをrollbackするように宣言(マーク)し、呼出し元へは “TransactionRolledBackException”が返却されます。呼出し元でトランザクションがrollbackされます。

Required

  • 呼出し元でトランザクションが開始されている場合

    トランザクションがrollbackにマークされている場合、呼出し元へは“TransactionRolledBackException”例外が返却され、呼出し元で、トランザクションがrollbackされます。(rollbackされなくてはなりません。)
    上記以外の場合、ユーザ例外が返却されます。
  • 呼出し元でトランザクションが開始されていない場合

    トランザクションがrollbackにマークされている場合、コンテナによりトランザクションがrollbackされ、呼出し元へは“RemoteException”例外が返却されます。
    上記以外の場合、コンテナによりトランザクションがcommitされ、呼出し元へはユーザ例外が返却します。
  • 呼出し元でトランザクションが開始されている場合

    コンテナがトランザクションをrollbackするようマーク(宣言)します。呼出し元へは“TransactionRolledBackException”例外が返却され、呼出し元で、トランザクションがrollbackされます。(rollbackされなくてはなりません。)
  • 呼出し元でトランザクションが開始されていない場合

    コンテナにより、トランザクションがrollbackされ、呼出し元へは“RemoteException”例外が返却されます。

Supports

当属性が指定されたメソッドは、SessionContext/EntityContextインタフェースのsetRollbackOnlyメソッドを使用することはできません。呼出し元へは、メソッド内で返却されたユーザ例外が返却されます。

  • 呼出し元でトランザクションが開始されている場合

    コンテナは、トランザクションをrollbackするようマーク(宣言)し、呼出し元へは“TransactionRolledBackException”が返却されます。呼出し元でトランザクションがrollbackされます。
  • 呼出し元でトランザクションが開始されていない場合

    呼出し元へは“RemoteException”を返却します。

RequiresNew

  • 呼出し元でトランザクションが開始されている場合

    トランザクションをrollbackするようマークされている場合は、rollbackを行います。マークされていない場合は、commitを行います。中断されたトランザクションは、コンテナにより再開され、呼出し元へユーザ例外が返却されます。
  • 呼出し元でトランザクションが開始されていない場合

    トランザクションをrollbackするようマークされている場合は、rollbackを行います。マークされていない場合は、commitを行います。呼出し元へはユーザ例外が返却されます。
  • 呼出し元でトランザクションが開始されている場合

    トランザクションは、rollbackされます。中断されたトランザクションをコンテナにより再開され、呼出し元へは“RemoteException”が返却されます。
  • 呼出し元でトランザクションが開始されていない場合

    トランザクションは、rollbackされます。呼出し元へは“RemoteException”が返却されます。

NotSupported

停止されたトランザクションはコンテナによって再開され、当メソッド呼出し元へはユーザ例外が返却されます。

停止されたトランザクションは、コンテナによって再開されます。呼出し元へは“RemoteException”例外が返却されます。

Never

呼出し元へは、メソッド内で返却されたユーザ例外が返却されます。

呼出し元へは、“RemoteException”が返却されます。

■ SessionSynchronizationインタフェースを使用した場合の例外処理

メソッド名

例外処理の内容

afterbegin

トランザクションにロールバックが指定され、“TransactionRolledbackException”例外がビジネスメソッドの呼出し元へ通知されます。

beforeCompletion

トランザクションがロールバックされ、コミットの発行元に対して“HeuristicRolledbackException”例外が通知されます。

afterCompletion

例外は通知されません。


目次 索引 前ページ次ページ

All Rights Reserved, Copyright (C) 富士通株式会社 2006