2017-08-04 2 views
1

Ich habe eine JEE-Anwendung, die in die Oracle- und Cache-Datenbanken fügt und liest. Die Umgebung verwendet Weblogik, Spring und Hibernate. Wir verwenden hbm-Mapping-Dateien. Alles funktionierte gut in: Spring v4.2.7 und Hibernate 4.3.10final und Weblogik 12.1.2 und java 8. Aber nach dem Upgrade auf Frühling v4.3.7 und Hibernate 5.2.9 final und Weblogik 12.2.1.2, scheitern die Einsätze mit 'Keine Transaktion in Bearbeitung' Ausnahme im Ruhezustand. Irgendwie wird die Web-Logik-JTA-Transaktion nicht von Spring zu Hibernate propagiert - sie ist im Frühjahr v4.3.7 gebrochen. Ich habe einige Einstellungen in Hibernate-Eigenschaften von org.springframework.orm.hibernate5.LocalSessionFactoryBean versucht, aber nicht geholfen.Datenbankeinfügungen scheitern ohne Transaktionsfehler, wenn UPGRADED zu Spring 4.3.7 und Hibernate 5.2.9

Insert Ausnahme: javax.persistence.TransactionRequiredException: keine Transaktion im Gange ist

Ihre Hilfe wird sehr geschätzt.

Im Folgenden sind die Details:

Einfügen von Daten in Oracle-Datenbank in einer Anwendung fein gearbeitet, dass diese in Java 8 env verwendet: weblogic v12.1.2, Frühling 4.2.7, winter 4.3.10 , Hibernate-commons-Anmerkungen 4.0.5 Hibernate-Validator: 4.1.0, ojdbc6, Java 8

ich habe ein Upgrade diese und die Einsätze ausfallen: weblogic zu 12.2.1.2 spring 4.3.7 überwintern 5.2.9 hibernate-commons-annotations 5.01. ojdbc7

Frühling Auto Verdrahtung Details:

<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> 

Ausnahme-Stack-Trace:

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) 

Antwort

1

Höchstwahrscheinlich ist es eine fehlerhafte JTA Transaktion Konfiguration im Frühjahr. Warum verwenden Sie die Spring 2.5-Transaktionsverarbeitung mit XML- und AOP-Konfigurationen?

Überprüfen Sie this GitHub repository, um zu sehen, wie Sie es mit Java-basierten Konfiguration für ein JTA-env tun können.

Verwandte Themen