[Seasar-user:18491] Re: DataSource取得時のトランザクション動作について
duran
[E-MAIL ADDRESS DELETED]
2009年 9月 14日 (月) 10:36:47 JST
小林さん
ご回答ありがとうございます。
単純にコネクションが足りて無かったようです。
実際にはmaxPoolSizeは2で設定されていたようなのですが、
どこかで使用してるようなので、もう一度見直したいと思います。
ありがとうございました。
> 小林 (koichik) です.
>
> Date: Fri, 11 Sep 2009 14:37:59 +0900
> From: duran <[E-MAIL ADDRESS DELETED]>
> To: [E-MAIL ADDRESS DELETED]
> Subject: [Seasar-user:18484] DataSource取得時のトランザクション動作について
>
>> UpdateLogicImpl#update で、requiresNewTxをかけているのですが、
>> このメソッドが呼ばれた瞬間に、処理が止まります。
>> ※ログに「トランザクションが開始されました」と出た直後になります。
>
> 「呼ばれた瞬間」というのは考えにくいです.
> 実際には update() の中に入って,
>
>> @Aspect("j2ee.requiresNewTx")
>> public void update(){
>> //DB更新処理
>> hogeDao.insert(hoge);
>
> この hogeDao.insert() の中で止まっているのでは?
> デバッガでここにブレークポイントを付けて確認
> してみてください.
>
> hogeDao.insert() の中で止まるのであれば,
> コネクションプールに利用可能なコネクションが
> 存在していないケースが考えられます.
>
> 例えば maxPoolSize が 1 になっている場合,
> 利用可能な唯一のコネクションが外側の
> トランザクションで利用され,内側の
> requiresNew なトランザクションで利用できる
> コネクションがないため,デッドロックして
> しまいます.
>
> このような状況になるのであれば,コネクション
> プールの maxPoolSize を増やしてください.
>
>
Seasar-user メーリングリストの案内