https://blogs.oracle.com/ldemichiel/entry/transactional_interceptors
Java EEプラットフォーム全体でManaged Beanテクノロジーを合わせる目標の一環として、Java EE7での改善点の一つがJTAトランザクションのインターセプタの使いやすさです。ここでの意図は、CDIインターセプタベースのより一般的なソリューションを使って、全体としてプラットフォームへのEJBの container-managed transaction (CMT)の使いやすさをプラットフォームに持ち込み、これらがCDI Managed Beanおよびその他のJava EEコンポーネントで使用可能にすることです。こうした方針に対し、Java EE 7 Platform Expert Groupのメンバーから大規模なサポートがあります。
これを実現するため、アノテーションと標準化された値をjavax.transactionパッケージに追加することを考えています。以下のような感じです。
@Inherited @InterceptorBinding @Target({TYPE, METHOD}) @Retention(RUNTIME) public @interface Transactional { TxType value() default TxType.REQUIRED } public enum TxType { REQUIRED, REQUIRED_NEW, MANDATORY, SUPPORTS, NOT_SUPPORTED, NEVER } public class ShoppingCart { ... @Transactional public void checkOut() {...} ... }現在、JTA仕様のアップデートの一環で対応するインターセプタクラスのセマンティクスを定義することを考えています。この取り組みはJava EE 7の下でjava.netのJTA仕様プロジェクトの一環で実施する予定です。
JTA spec projectこの困難なパートはいつも通り詳細を確定する予定です。
http://java.net/projects/jta-spec/
これまでかなりの議論をやってきました(がまだ収束できていません)。ポイントは、Transactional Interceptorに達する例外が実行中のトランザクションにどのような影響を与えるか、ということをどうにかしなければなりません。
- 常にロールバックさせるのか?
- 決してロールバックさせないのか?
- 実行時例外の場合のみロールバックさせるのか?
- この挙動をアノテーションでオーバーライドしていなければロールバックさせるのか?
- この挙動をアノテーションでオーバーライドしていなければロールバックさせないのか?
- 挙動のオーバーライドがアノテーションで設定可能であれば、これらのアノテーションはどのような形を取るのか?
[jsr342-experts] transactional methods and exceptionsこれを解決しようとする前に、もっと多くの開発者コミュニティからフィードバックを頂きたいと切に希望しています。この議論に参加頂くには、ここにコメントを残すか、Java EE Platform Specification Projectのメーリングリスト users@javaee-spec.java.net に参加してスレッドを追加するか、JTA仕様のプロジェクトに参加して下さい。
http://java.net/projects/javaee-spec/lists/jsr342-experts/archive/2012-01/message/35
Java EE Platform Specification
http://java.net/projects/javaee-spec/pages/Home
Java Transaction API Specification
http://java.net/projects/jta-spec/
0 件のコメント:
コメントを投稿