oracleおよびcacheデータベースに挿入および読み込みを行うJEEアプリケーションがあります。環境では、Webロジック、スプリング、および休止状態が使用されます。 hbmマッピングファイルを使用します。 Spring v4.2.7とhibernate 4.3.10finalとWeb logic 12.1.2とjava 8はすべて正常に動作しました。しかし、Spring v4.3.7とhibernate 5.2.9 finalとweb logic 12.2.1.2にアップグレードした後、挿入は失敗します休止状態で '進行中のトランザクションなし'例外。どうにかしてWebロジックのJTAトランザクションはSpringによってHibernateに伝播されません。これはSpring v4.3.7で壊れています。 org.springframework.orm.hibernate5.LocalSessionFactoryBeanのハイバネート・プロパティーで設定を少し試しましたが、助けにはなりませんでした。Spring 4.3.7およびHibernate 5.2.9へのアップグレード時にトランザクション・エラーなしでデータベース・インサートが失敗する
挿入例外:javax.persistence.TransactionRequiredException:進行中のトランザクションがない
あなたのヘルプは高く評価されています。
以下は詳細です:Oracleデータベース内のデータを挿入する
は、Java 8でこれらを使用するアプリケーションではうまくいきましたENV: のWebLogic v12.1.2、 春4.2.7、 4.3.10を休止します、 休止・コモンズ・注釈4.0.5、 休止 - バリ: 012:4.1.0、 ojdbc6、 のjava
私はこれらをアップグレードし、挿入が失敗weblogicから12.2.1.2 spring 4.3.7 hibernate 5.2.9 hibernate-commons-annotations 5.01。 ojdbc7
春の自動配線の詳細:
<aop:config>
<aop:pointcut id="writeTxMethods" expression="execution(* xx.transaction.TransactionManagerInterface.*(..))" />
<aop:advisor advice-ref="writeTxAdvice" pointcut-ref="writeTxMethods" order="1" />
</aop:config>
<tx:advice id="writeTxAdvice" transaction-manager="xxTransactionManager">
<tx:attributes>
<tx:method name="createData" propagation="REQUIRES_NEW" isolation="READ_COMMITTED" />
</tx:attributes>
</tx:advice>
<bean abstract="true" id="xxHibernatePropertiesPojo" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<!-- <property name="jtaTransactionManager" ref="xxTransactionManager" /> -->
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle12cDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.jdbc.batch_size">100</prop>
<!-- <prop key="hibernate.order_inserts">true</prop> -->
<prop key="hibernate.query.plan_cache_max_strong_references">${hibernate.query.plan_cache_max_strong_references.size}</prop>
<prop key="hibernate.query.plan_cache_max_soft_references">${hibernate.query.plan_cache_max_soft_references.size}</prop>
<prop key="hibernate.statement_cache.size">${hibernate.statement_cache.size}</prop>
<prop key="hibernate.prepare_sql">${hibernate.prepare_sql}</prop>
<prop key="hibernate.connection.release_mode">after_statement</prop>
<!-- <prop key="hibernate.transaction.flush_before_completion">true</prop>-->
<prop key="hibernate.transaction.jta.platform">org.hibernate.service.jta.platform.internal.WeblogicJtaPlatform</prop>
</props>
</property>
<property name="dataSource" ref="orclDataSource" />
<property name="mappingResources">
<list>
<value>xx/Create.hbm.xml</value>
</list>
</property>
</bean>
例外のスタックトレース:
javax.persistence.TransactionRequiredException: no transaction is in progress
org.hibernate.internal.SessionImpl.checkTransactionNeeded(SessionImpl.java:3450),
org.hibernate.internal.SessionImpl.doFlush(SessionImpl.java:1418),
org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1414),
XX.persistence.hibernate.WriteableManager.create(WriteableManager.java:103),
XX.transaction.xxTxManager.create(xxTxManager.java:800),
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method),
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62),
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43),
java.lang.reflect.Method.invoke(Method.java:498),
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333),
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190),
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157),
org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99),
org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:282),
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96),
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179),
org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92),
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179),
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213),
com.sun.proxy.$Proxy584.create(Unknown Source),
xx.ejb.xxSynchronousSession.create(XXSynchronousSession.java:400),
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method),
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62),
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43),
java.lang.reflect.Method.invoke(Method.java:498),
com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310),
com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182),
com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149),
com.oracle.pitchfork.intercept.MethodInvocationInvocationContext.proceed(MethodInvocationInvocationContext.java:101),
com.oracle.pitchfork.intercept.JeeInterceptorInterceptor.invoke(JeeInterceptorInterceptor.java:101),
com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171),
com.oracle.pitchfork.intercept.MethodInvocationInvocationContext.proceed(MethodInvocationInvocationContext.java:101),
com.oracle.pitchfork.intercept.JeeInterceptorInterceptor.invoke(JeeInterceptorInterceptor.java:101),
com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171),
com.oracle.pitchfork.intercept.MethodInvocationInvocationContext.proceed(MethodInvocationInvocationContext.java:101),
org.jboss.weld.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvoke(AbstractEJBRequestScopeActivationInterceptor.java:73),
org.jboss.weld.ejb.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:52),
sun.reflect.GeneratedMethodAccessor288.invoke(Unknown Source),
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43),
java.lang.reflect.Method.invoke(Method.java:498),
com.oracle.pitchfork.intercept.JeeInterceptorInterceptor.invoke(JeeInterceptorInterceptor.java:94),
com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171),
com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131),
com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119),
com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171),
com.bea.core.repackaged.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215),
com.sun.proxy.$Proxy576.create(Unknown Source),
XX.ejb.XXSynchronousSession_ejtj10_ELOImpl.__WL_invoke(Unknown Source),
weblogic.ejb.container.internal.SessionLocalMethodInvoker.invoke(SessionLocalMethodInvoker.java:33),
XX.ejb.XXSynchronousSession_ejtj10_ELOImpl.create(Unknown Source),
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method),
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62),
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43),
java.lang.reflect.Method.invoke(Method.java:498),
org.springframework.ejb.access.LocalSlsbInvokerInterceptor.invokeInContext(LocalSlsbInvokerInterceptor.java:75),
org.springframework.ejb.access.AbstractSlsbInvokerInterceptor.invoke(AbstractSlsbInvokerInterceptor.java:189),
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179),
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213),
com.sun.proxy.$Proxy556.create(Unknown Source),
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method),
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62),
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43),
java.lang.reflect.Method.invoke(Method.java:498),
org.apache.cxf.service.invoker.AbstractInvoker.createInvocation(AbstractInvoker.java:180),
org.apache.cxf.jaxws.JAXWSMethodInvoker.createInvocation(JAXWSMethodInvoker.java:66),
org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:96),
org.apache.cxf.jaxws.AbstractJAXWSMethodInvoker.invoke(AbstractJAXWSMethodInvoker.java:232),
org.apache.cxf.jaxws.JAXWSMethodInvoker.invoke(JAXWSMethodInvoker.java:85),
org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:74),
org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:59),
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511),
java.util.concurrent.FutureTask.run(FutureTask.java:266),
org.apache.cxf.interceptor.ServiceInvokerInterceptor$2.run(ServiceInvokerInterceptor.java:126),
org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37),
org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:131),
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308),
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121),
org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:251),
org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:234),
org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:208),
org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160),
org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:171),
org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:293),
org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:212),
javax.servlet.http.HttpServlet.service(HttpServlet.java:707),
org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:268),
weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:286),
weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:260),
weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:137),
weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:350),
weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:247),
weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3679),
weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3649),
weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:326),
weblogic.security.service.SecurityManager.runAsForUserCode(SecurityManager.java:197),
weblogic.servlet.provider.WlsSecurityProvider.runAsForUserCode(WlsSecurityProvider.java:203),
weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:71),
weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2433),
weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2281),
weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2259),
weblogic.servlet.internal.ServletRequestImpl.runInternal(ServletRequestImpl.java:1691),
weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1651),
weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:270),
weblogic.invocation.ComponentInvocationContextManager._runAs(ComponentInvocationContextManager.java:348),
weblogic.invocation.ComponentInvocationContextManager.runAs(ComponentInvocationContextManager.java:333),
weblogic.work.LivePartitionUtility.doRunWorkUnderContext(LivePartitionUtility.java:54),
weblogic.work.PartitionUtility.runWorkUnderContext(PartitionUtility.java:41),
weblogic.work.SelfTuningWorkManagerImpl.runWorkUnderContext(SelfTuningWorkManagerImpl.java:640),
weblogic.work.ExecuteThread.execute(ExecuteThread.java:406),
weblogic.work.ExecuteThread.run(ExecuteThread.java:346)