第8回 J2EEのトランザクション処理
トランザクション属性の特長 |
Required |
この属性が設定されている場合、次のようなトランザクション処理が行われます。あるトランザクションの下にクライアントがあった場合で、クライアントがビーンのメソッドを呼び出したとします。このとき、このメソッドの実行は、クライアントが属するトランザクションの下で行われます。もし、クライアントがトランザクションの下になかったら、コンテナは、メソッドを走らせる前に、新しいトランザクションを開始します。この属性は、たいていのトランザクション処理に対して有効で、デフォルトのトランザクション属性として使うことができるでしょう。
先に触れたpreInvokeTxメソッドの、このREQUIRED属性を処理している部分を見てみましょう。
.............. |
RequireNew |
この属性は、クライアントにトランザクションの下になかったら、メソッドの呼び出しに際して新しいトランザクションを始めるという点では、先のRequierdと同じですが、クライアントがあるトランザクションの下で走っている時には、次のような処理を行います。
まず、クライアントのトランザクションを一時停止します。そして、新しいトランザクションを開始してその下でメソッドを呼び出します。メソッドの呼び出しが終わったら、元のクライアントのトランザクションを復活させます。
この属性を使えば、メソッドの呼び出しは、必ず、新しいトランザクションの下で行われるようにすることが出来ます。
preInvokeTxメソッド |
case 4: // TX_REQUIRES_NEW |
postInvokeTxメソッド |
case 4: // TX_REQUIRES_NEW |
Mandatory |
あるトランザクションの下にクライアントがあった場合、ビーンのメソッドの実行は、クライアントの属するトランザクションの下で行われます。もし、クライアントがトランザクションの下になかったら、コンテナは、TransactionRequiredException例外を投げます。
この属性は、結局、すべてのメソッド呼び出しが、クライアントのトランザクションの下で行われるべきことを要求しています。
preInvokeTxメソッド |
case 5: // TX_MANDATORY |
NotSupported |
あるトランザクションの下にクライアントがあって、ビーンのメソッドを呼び出した場合、コンテナは、メソッドの呼び出し前にクライアントのトランザクションを一時停止し、メソッドの実行が終わってからそれを復活します。もし、クライアントがトランザクションの下になかったら、コンテナは、メソッドの呼び出しに際して、新しいトランザクションを始めることはしません。
この属性を使えば、メソッドは、コンテナの生成するトランザクションの下では、決して実行されないことになります。
Supports |
あるトランザクションの下にクライアントがあった場合、ビーンのメソッドの実行は、クライアントの属するトランザクションの下で行われます。もし、クライアントがトランザクションの下になかったら、コンテナは、メソッドの呼び出しに際して、新しいトランザクションを始めることはしません。
この属性の場合には、トランザクションの働きは、同じメソッドでも変わることがありますので、注意が必要です。
Never |
トランザクションの下で走っているクライアントが、ビーンのメソッドを呼び出そうとすると、コンテナは、RemoteExceptionを投げます。もし、クライアントがトランザクションの下になかったら、コンテナは、メソッドの呼び出しに際して、新しいトランザクションを始めることはしません。
4/5
|
J2EEの基礎(第8回) | |
コンピューティングにおけるトランザクションの必要性 | |
トランザクションの基礎を知る | |
J2EEのトランザクション | |
トランザクション属性の特長 | |
トランザクション属性 |
連載内容 | |
J2EEの基礎 | |
第1回 Java Pet Storeで、J2EEを体験する(1) | |
第2回 Java Pet Storeで、J2EEを体験する(2) | |
第4回 J2EEアプリケーションを構成するコンポーネント | |
第5回 データベースのブラウザを作る | |
第6回 EJBにおけるコンテナとコンポーネント | |
第7回 J2EEのセキュリティのキホンを知る | |
第8回 J2EEのトランザクション処理 |
連載記事一覧 |
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (2017/5/9)
ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。今回は、実案件を事例とし、ログ管理基盤の有用性を、障害対応時間比較も交えて紹介 - Chatwork、LINE、Netflixが進めるリアクティブシステムとは何か (2017/4/27)
「リアクティブ」に関連する幾つかの用語について解説し、リアクティブシステムを実現するためのライブラリを紹介します - Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (2017/4/6)
ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。初回は、ログ基盤の構築、利用方法について - プログラミングとビルド、Androidアプリ開発、Javaの基礎知識 (2017/4/3)
初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。
|
|