ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Spring Frameworkコミュのトランザクション管理について

  • mixiチェック
  • このエントリーをはてなブックマークに追加
質問で申し訳ないのですが、Springのトランザクション管理について
教えて下さい。

以下のような処理の流れです。
メイン
 |-スレッド生成処理
   |-トランザクション境界
     |-スレッド1トランザクション境界
       |-スレッド1処理
     |-スレッド2トランザクション境界
       |-スレッド2処理

このスレッド1とスレッド2のコネクションを共通して1つのトランザクションとして扱いたいです。

1.通常のTransactionManagerを使用
  ⇒各スレッドでとってくるコネクションがばらばら

2.DataSourceTransactionManagerで使用しているTransactionSynchronizationManagerが
  ThreadLocalなので、それをInheritableThreadLocalに変更したクラスでDataSourceTransactionManagerを作成
 ⇒コネクションは一致しているが、Commitしているコネクションが違うっぽい

2の方法は、そもそも考え方が間違っているのでしょうか?
それともInheritableThreadLocalの使い方が違うのでしょうか?

2で作成したクラスを乗せます。

public class NamedInheritablethreadlocal<T> extends InheritableThreadLocal<T> {

  public NamedInheritablethreadlocal(String name)
  {
    Assert.hasText(name, "Name must not be empty");
    this.name = name;
  }

  public String toString()
  {
    return name;
  }

  private final String name;
}


public abstract class TransactionParentSynchronizationManager
{
 〜略〜

  private static final Log logger;
  private static final Comparator synchronizationComparator = new OrderComparator();
  private static final ThreadLocal resources = new NamedInheritablethreadlocal("Transactional resources");
  private static final ThreadLocal synchronizations = new NamedInheritablethreadlocal("Transaction synchronizations");
  private static final ThreadLocal currentTransactionName = new NamedInheritablethreadlocal("Current transaction name");
  private static final ThreadLocal currentTransactionReadOnly = new NamedInheritablethreadlocal("Current transaction read-only status");
  private static final ThreadLocal currentTransactionIsolationLevel = new NamedInheritablethreadlocal("Current transaction isolation level");
  private static final ThreadLocal actualTransactionActive = new NamedInheritablethreadlocal("Actual transaction active");

  static
  {
    logger = LogFactory.getLog(org.springframework.transaction.support.TransactionParentSynchronizationManager.class);
  }
}


コメント(0)

mixiユーザー
ログインしてコメントしよう!

Spring Framework 更新情報

Spring Frameworkのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。