[Seasar-user:21888] Re: トランザクション制御について

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2014年 4月 23日 (水) 04:25:21 JST


小林 (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


-- 
{
  name: "Koichi Kobayashi",
  mail: "koichik @ improvement.jp",
  blog: "http://d.hatena.ne.jp/koichik/",
  twitter: "@koichik"
}



Seasar-user メーリングリストの案内