|
|
トランザクションを使用する
トランザクション・オブジェクトを使用して、複数のサービス呼び出しを 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 をスローします。
例外の処理
Jolt による Tuxedo サービスの呼び出し開始時にエラーや障害が発生した場合、Java の例外を使用してアプリケーションに報告されます。常に try / catch ブロックに call() メソッドを入れ、例外が発生した場合は適切な処理を行う必要があります。call() メソッドがスローする可能性のある例外とその理由を以下に示します。
Tuxedo サービスのロジックでエラーが発生すると、この例外がスローされます。たとえば、クライアントが withdrawal サービスを使用して、現在の残高を超える金額を不正に引き出そうとした場合などに発生します。Tuxedo サービスが TPESVCFAIL を返すと、ApplicationException がスローされます。サービス呼び出し時に返される Result オブジェクトに、アプリケーション固有のエラーに関する情報を含めることができます。Result オブジェクトには、ApplicationException.getResult() メソッドを使用してアクセスできます。
Jolt では bea.jolt.ApplicationException というフル・パッケージ名で別の例外が定義されているので、この例外ではフル・パッケージ名 bea.jolt.pool.ApplicationException を使用してください。
JoltException は、以下に示すすべての例外のスーパー・クラスです。これらの例外はすべて、アプリケーション・ロジックに違反するシステム・エラーが発生したことを示します。JoltException については、『BEA Jolt』の「BEA Jolt の例外」を参照してください。
Jolt のセッション・プールで例外が発生すると、この例外がスローされます。たとえば、すべてのセッションがビジー状態の場合や、セッション・プールが中断された場合などに発生します。
アプリケーションを含む Tuxedo サービスの起動に関するエラーが発生すると、この例外がスローされます。たとえば、サービスのタイムアウトや、存在しないサービスが呼び出された場合などに発生します。
トランザクションの起動、コミット、またはアボートに失敗すると、この例外がスローされます。
|
Copyright © 2001 BEA Systems, Inc. All rights reserved.
|