5.3 Transactionsサンプル・アプリケーション
Transactionsサンプル・アプリケーションでは、コースの登録の操作がトランザクションのスコープ内で実行されます。Transactionsサンプル・アプリケーションで使用されるトランザクション・モデルは、会話型モデルと、単一クライアントの呼出しでデータベースの複数の個別操作が呼び出されるモデルを組み合せたものです。
Transactionsサンプル・アプリケーションは、次のように機能します。
- 学生は登録するコースのリストを送信します。
- リストの各コースについて、CORBAサーバー・アプリケーションが次のことをチェックします:
- コースがデータベースにあるかどうか。
- 学生がコースに登録済であるかどうか。
- 学生が履修できる単位の最大数を超えているかどうか。
- 次のいずれかが発生します。
- コースがすべての基準を満たす場合は、CORBAサーバー・アプリケーションによってそのコースで学生が登録されます。
- コースがデータベースにない場合、またはそのコースで学生がすでに登録されている場合は、CORBAサーバー・アプリケーションによって、学生を登録できないコースのリストにそのコースが追加されます。すべての登録リクエストが処理された後、登録に失敗したコースのリストがCORBAサーバー・アプリケーションから返されます。CORBAクライアント・アプリケーションでは、トランザクションをコミットするか(登録リクエストが成功したコースで学生が登録される)、またはトランザクションをロールバックするか(どのコースにも学生は登録されない)を選択できます。
- 学生が履修できる単位の最大数を超えている場合は、
TooManyCreditsユーザー例外がCORBAサーバー・アプリケーションからCORBAクライアント・アプリケーションに返されます。CORBAクライアント・アプリケーションでは、リクエストが拒否されたことを説明する短いメッセージが表示されます。その後、CORBAクライアント・アプリケーションによってトランザクションがロールバックされます。
次の図に、Transactionsサンプル・アプリケーションの仕組みを示します。
図5-2 Transactionsサンプル・アプリケーション

Transactionsサンプル・アプリケーションは、次の2通りの方法でトランザクションをロールバックします:
- 非致命的。コースがデータベースに存在しないか、学生がすでに登録されているためにコースの登録が失敗する場合は、それらのコースの数がCORBAサーバー・アプリケーションからCORBAクライアント・アプリケーションに返されます。トランザクションをロールバックするかどうかの決断は、CORBAクライアント・アプリケーションのユーザーが行います。
- 致命的。登録できる単位の最大数を超えているためにコースの登録が失敗する場合は、CORBAサーバー・アプリケーションによってCORBA例外が生成され、その例外がCORBAクライアント・アプリケーションに返されます。この場合も、トランザクションをロールバックするかどうかは、CORBAクライアント・アプリケーションに依存します。
親トピック: トランザクションの使用