[Java] Transactional Interceptors

原文はこちら。
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に達する例外が実行中のトランザクションにどのような影響を与えるか、ということをどうにかしなければなりません。
  • 常にロールバックさせるのか?
  • 決してロールバックさせないのか?
  • 実行時例外の場合のみロールバックさせるのか?
  • この挙動をアノテーションでオーバーライドしていなければロールバックさせるのか?
  • この挙動をアノテーションでオーバーライドしていなければロールバックさせないのか?
  • 挙動のオーバーライドがアノテーションで設定可能であれば、これらのアノテーションはどのような形を取るのか?
While most members of the Java EE 7 Expert Groupのほとんどのメンバーがいくつかの例外により、結果として現在のトランザクションがロールバック対象としてマークされることに同意する一方で、これを設定可能にするにはどうするのが一番よいのか、ということについて多岐にわたる意見があります。議論の詳細は以下のリンクからご覧頂けます。
[jsr342-experts] transactional methods and exceptions
http://java.net/projects/javaee-spec/lists/jsr342-experts/archive/2012-01/message/35
これを解決しようとする前に、もっと多くの開発者コミュニティからフィードバックを頂きたいと切に希望しています。この議論に参加頂くには、ここにコメントを残すか、Java EE Platform Specification Projectのメーリングリスト users@javaee-spec.java.net に参加してスレッドを追加するか、JTA仕様のプロジェクトに参加して下さい。
Java EE Platform Specification
http://java.net/projects/javaee-spec/pages/Home
Java Transaction API Specification
http://java.net/projects/jta-spec/

0 件のコメント:

コメントを投稿