3.7 トランザクションを使用する
トランザクション・オブジェクトを使用して、複数のサービス呼出しを1つのアクションにグループ化し、アプリケーション・ロジック内でデータの整合性を維持することができます。次のメソッドを使用してセッション・プールからトランザクションを取得します。
Transaction trans = ssPool.startTransaction(timeout);
トランザクション・オブジェクト trans
は、トランザクションに対する参照を保持します。 ssPool
はSessionPoolまたはServletSessionPoolオブジェクトになり、トランザクションのtimeout
引数は秒単位で指定します。
トランザクションによってセッションが取得されると、そのトランザクションがコミットまたは中断されるか、タイムアウトになるまで、ほかのトランザクションはそのセッションを使用できません。ただし、トランザクションには含まれない単独のリクエストによって使用することはできます。トランザクションがプールからセッションを取得できなかった場合、このメソッドはbea.jolt.pool.TransactionException
をスローします。セッション・プールが中断されると、メソッドはbea.jolt.pool.SessionPoolException
をスローします。
アプリケーションでcall()
メソッドを使用するごとに、最後のパラメータでトランザクション・オブジェクトを指定する必要があります。例:
ssPool.call("svcName", request, trans);
1つのトランザクションで複数の呼出しを行うことができます。この呼出しは、トランザクション・オブジェクトのメソッドを使用してトランザクションをコミットまたはロールバックするまで完了しません。trans.commit()
メソッドによってトランザクションが完了します。このメソッドは、コミットが成功した場合は0を返し、失敗した場合はTransactionException
をスローします。
トランザクションを中止する必要がある場合は、Transaction.rollback()
メソッドを使用します。このメソッドは、トランザクションの中止を試みます。中止に成功した場合は0を返し、失敗した場合はTransactionException
をスローします。
親トピック: WebLogic用のJoltの実装