2017-08-04 2 views
1

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) 

答えて

1

ほとんどの場合、それは春の不良JTAトランザクションの設定です。なぜSpring 2.5 Transaction HandlingをXMLとAOPのコンフィグレーションで使用するのですか?

this GitHub repositoryを参照して、JTAのenvのJavaベースの設定でどのように動作するかを確認してください。

関連する問題