[Seasar-user:21894] Re: トランザクション制御について
植木 貴紀
[E-MAIL ADDRESS DELETED]
2014年 4月 23日 (水) 22:08:26 JST
小林さま
ご返事ありがとうございます。
>> 大雑把に言うと、最初にコネクションを取得
>> する前にトランザクションがロールバックと
>> マークされていれば例外が発生します。
今回のエラー[ESSR0308]発生について下記の解釈で正しいでしょうか。
手動でトランザクション制御を実施している処理のエラーによって
ロールバックとしてマークされたトランザクションが滞留している場合、
別の処理(別人からのアクセス)にて新しいトランザクションを開始すると滞留
したトランザクションにコネクションを割り振ろうとすることがある。
seasar2にてコネクションをトランザクションに割り当てる際の仕様(割り当て
方)について分かりますでしょうか。
また、トランザクションにコネクションを割り当てる制御について
特別なコーディングが必要になりますでしょうか。
>> しかし、ロールバックとマークされる前に
>> プールから取得 (およびトランザクションへ
>> 割り当て) されたコネクションに関しては、
>> ロールバックとマークされた後でも使うことが
>> できます (更新系のDMLも可)。
上記の場合、下記の解釈でよろしいでしょうか。
ロールバックとマークされた後でもトランザクション・コネクションはマーク前
と同様に使用できるが、
別の処理(別人からのアクセス)にて開始した新しいトランザクションに上記の
コネクションを取得、割り当てはできない。
コネクションの再割り当てはトランザクション終了後のみ可能。
お手数かと存じますが、ご教授のほど宜しくお願い致します。
(2014/04/23 4:25), Koichi Kobayashi wrote:
> 小林 (koichik) です。
>
>> 1.ロールバックがマークされているコネクションに対し、
>> トランザクション制御のあるDBアクセスをしているのに、エラーの発生がまちま
>> ちだということ。
>
> IIllegalStateExceptionは、ロールバックと
> マークされたトランザクションに「新しい
> コネクション」を割り当てる際に発生します。
> これは、コネクションプールから (その
> トランザクション中で) 最初にコネクションを
> 取得する際に行われます。
>
> しかし、ロールバックとマークされる前に
> プールから取得 (およびトランザクションへ
> 割り当て) されたコネクションに関しては、
> ロールバックとマークされた後でも使うことが
> できます (更新系のDMLも可)。
>
> 大雑把に言うと、最初にコネクションを取得
> する前にトランザクションがロールバックと
> マークされていれば例外が発生します。
>
>
>> 2.今回は事象が再現しやすいように、コネクションプールのMaxSizeを1にして
>> おりますが、最初はデフォルト値である10を設定しておりました。
>> プールしてあるコネクションの割り当ての仕様をご存知でしたらご教授願いたい
>> です。
>
> こちらは何を知りたいのかわかりませんでした。
> 疑問点を具体的に書いてください。
>
>
> On Tue, 22 Apr 2014 05:54:01 +0900, 植木 貴紀 <ueki @ inet.co.jp> wrote:
>
>> 小林さま
>>
>> ご返事ありがとうございます。
>>
>>>> ロールバックした後の「トランザクション
>>>> 制御のあるアクセス」というのは、新しい
>>>> トランザクションを開始して、その中で
>>>> 接続を取得しているのでしょうか?
>> その通りです。
>> 別のクラスで、新しいトランザクションを開始してアクセスしております。
>>
>>>> ざっくりとでいいので関連するコードの
>>>> 抜粋 (概要) を見せてもらった方が話が
>>>> 早いかもしれません。
>> userTransaction.rollback();をコールする前に、
>> ログを出力するクラスの処理があったのですが、
>> そこでさらにExceptionが発生しており、
>> userTransaction.rollbackがコールされておりませんでした。
>> コネクションのステータスが、STATUS_MARKED_ROLLBACKであることも確認できま
>> した。
>> しっかりと確認できていない中、投稿してしまい申し訳ありませんでした。
>>
>> ですが、まだ下記2点についての疑問が残っておりますので、ご教授いただけた
>> ら幸いです。
>>
>> 1.ロールバックがマークされているコネクションに対し、
>> トランザクション制御のあるDBアクセスをしているのに、エラーの発生がまちま
>> ちだということ。
>>
>> 2.今回は事象が再現しやすいように、コネクションプールのMaxSizeを1にして
>> おりますが、最初はデフォルト値である10を設定しておりました。
>> プールしてあるコネクションの割り当ての仕様をご存知でしたらご教授願いたい
>> です。
>>
>> また、下記が例外のスタックトレースになります。
>>
>> ■例外のスタックトレース(前)
>> (手動でのトランザクション管理で、SQL発行)
>> java.lang.NullPointerException
>> at
>> jp.co.test.hoge.action.MailCertificationAction.index(MailCertificationAction.java:286)
>> at
>> jp.co.test.hoge.action.MailCertificationAction$$EnhancedByS2AOP$$465a0ba6.$$index$$invokeSuperMethod$$(MailCertificationAction$$EnhancedByS2AOP$$465a0ba6.java)
>> at
>> jp.co.test.hoge.action.MailCertificationAction$$EnhancedByS2AOP$$465a0ba6$$MethodInvocation$$index0.proceed(MethodInvocationClassGenerator.java)
>> at
>> org.seasar.extension.tx.DefaultTransactionCallback.execute(DefaultTransactionCallback.java:58)
>> at
>> org.seasar.extension.tx.adapter.JTATransactionManagerAdapter.never(JTATransactionManagerAdapter.java:114)
>> at
>> org.seasar.extension.tx.NeverInterceptor.invoke(NeverInterceptor.java:38)
>> at
>> jp.co.test.hoge.action.MailCertificationAction$$EnhancedByS2AOP$$465a0ba6$$MethodInvocation$$index0.proceed(MethodInvocationClassGenerator.java)
>> at
>> org.seasar.framework.aop.interceptors.TraceInterceptor.invoke(TraceInterceptor.java:73)
>> at
>> jp.co.test.hoge.action.MailCertificationAction$$EnhancedByS2AOP$$465a0ba6$$MethodInvocation$$index0.proceed(MethodInvocationClassGenerator.java)
>> at
>> org.seasar.framework.aop.interceptors.ThrowsInterceptor.invoke(ThrowsInterceptor.java:79)
>> at
>> jp.co.test.hoge.action.MailCertificationAction$$EnhancedByS2AOP$$465a0ba6$$MethodInvocation$$index0.proceed(MethodInvocationClassGenerator.java)
>> at
>> jp.co.test.hoge.interceptor.ExceptionInterceptor.invoke(ExceptionInterceptor.java:60)
>> at
>> jp.co.test.hoge.interceptor.ExceptionInterceptor$$EnhancedByS2AOP$$5247834f.$$invoke$$invokeSuperMethod$$(ExceptionInterceptor$$EnhancedByS2AOP$$5247834f.java)
>> at
>> jp.co.test.hoge.interceptor.ExceptionInterceptor$$EnhancedByS2AOP$$5247834f$$MethodInvocation$$invoke0.proceed(MethodInvocationClassGenerator.java)
>> at
>> jp.co.test.hoge.interceptor.LoggingInterceptor.invoke(LoggingInterceptor.java:28)
>> at
>> jp.co.test.hoge.interceptor.ExceptionInterceptor$$EnhancedByS2AOP$$5247834f$$MethodInvocation$$invoke0.proceed(MethodInvocationClassGenerator.java)
>> at
>> jp.co.test.hoge.interceptor.ExceptionInterceptor$$EnhancedByS2AOP$$5247834f.invoke(ExceptionInterceptor$$EnhancedByS2AOP$$5247834f.java)
>> at
>> jp.co.test.hoge.action.MailCertificationAction$$EnhancedByS2AOP$$465a0ba6$$MethodInvocation$$index0.proceed(MethodInvocationClassGenerator.java)
>> at
>> jp.co.test.hoge.interceptor.LoggingInterceptor.invoke(LoggingInterceptor.java:28)
>> at
>> jp.co.test.hoge.action.MailCertificationAction$$EnhancedByS2AOP$$465a0ba6$$MethodInvocation$$index0.proceed(MethodInvocationClassGenerator.java)
>> at
>> jp.co.test.hoge.action.MailCertificationAction$$EnhancedByS2AOP$$465a0ba6.index(MailCertificationAction$$EnhancedByS2AOP$$465a0ba6.java)
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>> at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>> at java.lang.reflect.Method.invoke(Method.java:606)
>> at org.seasar.framework.util.MethodUtil.invoke(MethodUtil.java:96)
>> at org.seasar.struts.action.ActionWrapper.execute(ActionWrapper.java:139)
>> at org.seasar.struts.action.ActionWrapper.execute(ActionWrapper.java:87)
>> at
>> org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
>> at
>> org.seasar.struts.action.S2RequestProcessor.process(S2RequestProcessor.java:132)
>> at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
>> at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>> at
>> org.seasar.extension.filter.RequestDumpFilter.doFilter(RequestDumpFilter.java:127)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>> at
>> org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:79)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>> at
>> org.seasar.framework.container.hotdeploy.HotdeployFilter.doHotdeployFilter(HotdeployFilter.java:86)
>> at
>> org.seasar.framework.container.hotdeploy.HotdeployFilter.doFilter(HotdeployFilter.java:67)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>> at
>> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749)
>> at
>> org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:487)
>> at
>> org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:412)
>> at
>> org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339)
>> at org.seasar.struts.filter.RoutingFilter.forward(RoutingFilter.java:219)
>> at org.seasar.struts.filter.RoutingFilter.doFilter(RoutingFilter.java:99)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>> at
>> org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:79)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>> at
>> org.seasar.framework.container.hotdeploy.HotdeployFilter.doHotdeployFilter(HotdeployFilter.java:99)
>> at
>> org.seasar.framework.container.hotdeploy.HotdeployFilter.doFilter(HotdeployFilter.java:67)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>> at
>> jp.co.test.hoge.filter.RaclosEncodingFilter.doFilter(RaclosEncodingFilter.java:49)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>> at
>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
>> at
>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
>> at
>> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
>> at
>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
>> at
>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
>> at
>> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
>> at
>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
>> at
>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
>> at
>> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
>> at
>> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
>> at
>> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
>> at
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>> at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>> at java.lang.Thread.run(Thread.java:724)
>>
>>
>> ■例外のスタックトレース(後)
>> (自動でのトランザクション制御でストアドコール)
>>
>> org.seasar.framework.exception.SIllegalStateException: [ESSR0308]既に
>> ロールバックとしてマークされています
>> at
>> org.seasar.extension.jta.TransactionImpl.throwIllegalStateException(TransactionImpl.java:138)
>> at
>> org.seasar.extension.jta.TransactionImpl.assertActive(TransactionImpl.java:123)
>> at
>> org.seasar.extension.jta.TransactionImpl.enlistResource(TransactionImpl.java:452)
>> at
>> org.seasar.framework.util.TransactionUtil.enlistResource(TransactionUtil.java:64)
>> at
>> org.seasar.extension.dbcp.impl.ConnectionPoolImpl.checkOut(ConnectionPoolImpl.java:355)
>> at
>> org.seasar.extension.dbcp.impl.DataSourceImpl.getConnection(DataSourceImpl.java:59)
>> at
>> org.seasar.extension.jdbc.util.DataSourceUtil.getConnection(DataSourceUtil.java:51)
>> at
>> org.seasar.extension.jdbc.manager.JdbcManagerImpl.getJdbcContext(JdbcManagerImpl.java:381)
>> at
>> org.seasar.extension.jdbc.query.AbstractProcedureCall.execute(AbstractProcedureCall.java:48)
>> at jp.co.test.hoge.common.RaclosUtil.checkOnline(RaclosUtil.java:1202)
>> at jp.co.test.hoge.action.AgreementAction.index(AgreementAction.java:71)
>> at
>> jp.co.test.hoge.action.AgreementAction$$EnhancedByS2AOP$$405d30db.$$index$$invokeSuperMethod$$(AgreementAction$$EnhancedByS2AOP$$405d30db.java)
>> at
>> jp.co.test.hoge.action.AgreementAction$$EnhancedByS2AOP$$405d30db$$MethodInvocation$$index0.proceed(MethodInvocationClassGenerator.java)
>> at
>> org.seasar.framework.aop.interceptors.InvalidateSessionInterceptor.invoke(InvalidateSessionInterceptor.java:52)
>> at
>> jp.co.test.hoge.action.AgreementAction$$EnhancedByS2AOP$$405d30db$$MethodInvocation$$index0.proceed(MethodInvocationClassGenerator.java)
>> at
>> org.seasar.extension.tx.DefaultTransactionCallback.execute(DefaultTransactionCallback.java:58)
>> at
>> org.seasar.extension.tx.adapter.JTATransactionManagerAdapter.required(JTATransactionManagerAdapter.java:65)
>> at
>> org.seasar.extension.tx.RequiredInterceptor.invoke(RequiredInterceptor.java:50)
>> at
>> jp.co.test.hoge.action.AgreementAction$$EnhancedByS2AOP$$405d30db$$MethodInvocation$$index0.proceed(MethodInvocationClassGenerator.java)
>> at
>> org.seasar.framework.aop.interceptors.TraceInterceptor.invoke(TraceInterceptor.java:73)
>> at
>> jp.co.test.hoge.action.AgreementAction$$EnhancedByS2AOP$$405d30db$$MethodInvocation$$index0.proceed(MethodInvocationClassGenerator.java)
>> at
>> org.seasar.framework.aop.interceptors.ThrowsInterceptor.invoke(ThrowsInterceptor.java:79)
>> at
>> jp.co.test.hoge.action.AgreementAction$$EnhancedByS2AOP$$405d30db$$MethodInvocation$$index0.proceed(MethodInvocationClassGenerator.java)
>> at
>> jp.co.test.hoge.interceptor.ExceptionInterceptor.invoke(ExceptionInterceptor.java:60)
>> at
>> jp.co.test.hoge.interceptor.ExceptionInterceptor$$EnhancedByS2AOP$$39667a85.$$invoke$$invokeSuperMethod$$(ExceptionInterceptor$$EnhancedByS2AOP$$39667a85.java)
>> at
>> jp.co.test.hoge.interceptor.ExceptionInterceptor$$EnhancedByS2AOP$$39667a85$$MethodInvocation$$invoke0.proceed(MethodInvocationClassGenerator.java)
>> at
>> jp.co.test.hoge.interceptor.LoggingInterceptor.invoke(LoggingInterceptor.java:28)
>> at
>> jp.co.test.hoge.interceptor.ExceptionInterceptor$$EnhancedByS2AOP$$39667a85$$MethodInvocation$$invoke0.proceed(MethodInvocationClassGenerator.java)
>> at
>> jp.co.test.hoge.interceptor.ExceptionInterceptor$$EnhancedByS2AOP$$39667a85.invoke(ExceptionInterceptor$$EnhancedByS2AOP$$39667a85.java)
>> at
>> jp.co.test.hoge.action.AgreementAction$$EnhancedByS2AOP$$405d30db$$MethodInvocation$$index0.proceed(MethodInvocationClassGenerator.java)
>> at
>> jp.co.test.hoge.interceptor.LoggingInterceptor.invoke(LoggingInterceptor.java:28)
>> at
>> jp.co.test.hoge.action.AgreementAction$$EnhancedByS2AOP$$405d30db$$MethodInvocation$$index0.proceed(MethodInvocationClassGenerator.java)
>> at
>> jp.co.test.hoge.action.AgreementAction$$EnhancedByS2AOP$$405d30db.index(AgreementAction$$EnhancedByS2AOP$$405d30db.java)
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>> at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>> at java.lang.reflect.Method.invoke(Method.java:606)
>> at org.seasar.framework.util.MethodUtil.invoke(MethodUtil.java:96)
>> at org.seasar.struts.action.ActionWrapper.execute(ActionWrapper.java:139)
>> at org.seasar.struts.action.ActionWrapper.execute(ActionWrapper.java:87)
>> at
>> org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
>> at
>> org.seasar.struts.action.S2RequestProcessor.process(S2RequestProcessor.java:132)
>> at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
>> at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>> at
>> org.seasar.extension.filter.RequestDumpFilter.doFilter(RequestDumpFilter.java:127)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>> at
>> org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:79)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>> at
>> org.seasar.framework.container.hotdeploy.HotdeployFilter.doHotdeployFilter(HotdeployFilter.java:86)
>> at
>> org.seasar.framework.container.hotdeploy.HotdeployFilter.doFilter(HotdeployFilter.java:67)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>> at
>> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749)
>> at
>> org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:487)
>> at
>> org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:412)
>> at
>> org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339)
>> at org.seasar.struts.filter.RoutingFilter.forward(RoutingFilter.java:219)
>> at org.seasar.struts.filter.RoutingFilter.doFilter(RoutingFilter.java:90)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>> at
>> org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:79)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>> at
>> org.seasar.framework.container.hotdeploy.HotdeployFilter.doHotdeployFilter(HotdeployFilter.java:99)
>> at
>> org.seasar.framework.container.hotdeploy.HotdeployFilter.doFilter(HotdeployFilter.java:67)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>> at
>> jp.co.test.hoge.filter.RaclosEncodingFilter.doFilter(RaclosEncodingFilter.java:49)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>> at
>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
>> at
>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
>> at
>> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
>> at
>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
>> at
>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
>> at
>> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
>> at
>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
>> at
>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
>> at
>> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
>> at
>> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
>> at
>> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
>> at
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>> at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>> at java.lang.Thread.run(Thread.java:724)
>>
>>
>> (2014/04/22 4:20), Koichi Kobayashi wrote:
>>> 小林 (koichik) です。
>>>
>>> ロールバックした後の「トランザクション
>>> 制御のあるアクセス」というのは、新しい
>>> トランザクションを開始して、その中で
>>> 接続を取得しているのでしょうか?
>>>
>>> ざっくりとでいいので関連するコードの
>>> 抜粋 (概要) を見せてもらった方が話が
>>> 早いかもしれません。
>>> また、二つの例外のスタックトレースも
>>> みせてください。
>>>
>>>
>>>
>>>> 初めて投稿させていただきます。
>>>> うえっきと申します。お世話になります。
>>>>
>>>>
>>>> トランザクションの制御を手動で行っているメソッド内で
>>>> (@TransactionAttribute(TransactionAttributeType.NEVER))、
>>>> NullPointerException発生後、ロールバック(userTransaction.rollback)を行っ
>>>> たトランザクションに対して、
>>>> 再度トランザクション制御のあるアクセスしようとすると(※1)下記エラーが
>>>> 発生します。
>>>>
>>>> org.seasar.framework.exception.SIllegalStateException:
>>>> [ESSR0308]既にロールバックとしてマークされています
>>>>
>>>> (※1)コネクションプールのMaxSizeを1に設定し、同じコネクションを使用す
>>>> るようにしております。
>>>>
>>>>
>>>> エラーは毎回発生するのではなく、発生したりしなかったりと、原因がいまいち
>>>> わかりません。
>>>>
>>>> userTransaction.rollback();でロールバックしており、トランザクションがク
>>>> ローズしていないということはないと思っています。
>>>>
>>>> 推測される原因、原因の調査方法等、ご教授いただけたら幸いです。
>>>> よろしくお願いいたします。
>>>> _______________________________________________
>>>> Seasar-user mailing list
>>>> Seasar-user @ ml.seasar.org
>>>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>>
>>>
>>
>>
>> _______________________________________________
>> Seasar-user mailing list
>> Seasar-user @ ml.seasar.org
>> https://ml.seasar.org/mailman/listinfo/seasar-user
>
>
Seasar-user メーリングリストの案内