没有正在进行的交易-Karaf+;骆驼3.3。0+;JPA

没有正在进行的交易-Karaf+;骆驼3.3。0+;JPA,jpa,apache-camel,spring-data,Jpa,Apache Camel,Spring Data,我一直在尝试实现一个简单的Camel+karafwebservice,它使用Camel-JPA将实体保存到数据库中,但没有成功。我面临的问题是,当我尝试使用保存数据到(“jpa://entityClass)我得到以下例外情况: javax.persistence.TransactionRequiredException: no transaction is in progress at **org.hibernate.internal.AbstractSharedSes

我一直在尝试实现一个简单的Camel+karafwebservice,它使用Camel-JPA将实体保存到数据库中,但没有成功。我面临的问题是,当我尝试使用保存数据到(“jpa://entityClass)我得到以下例外情况:

 javax.persistence.TransactionRequiredException: no transaction is in progress
            at **org.hibernate.internal.AbstractSharedSessionContract.checkTransactionNeededForUpdateOperation(AbstractSharedSessionContract.java:413) ~[?:?]
    .....
    at org.apache.camel.component.jpa.JpaProducer$3.doInTransaction(JpaProducer.java:310)
        at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140)**
        at org.apache.camel.component.jpa.JpaProducer.processEntity(JpaProducer.java:254)
        at org.apache.camel.component.jpa.JpaProducer.process(JpaProducer.java:173)
        at org.apache.camel.support.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:67)
        at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:168)
        at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:395)
        at org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
        at org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:60)
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:147)
        at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:286)...
        at org.apache.camel.component.jetty.CamelContinuationServlet.doService(CamelContinuationServlet.java:219)
        at org.apache.camel.http.common.CamelServlet.service(CamelServlet.java:80)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:763)
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:569)
我的项目设置:

    <?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0"
        xsi:schemaLocation="
            http://www.osgi.org/xmlns/blueprint/v1.0.0 https://osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
            http://camel.apache.org/schema/blueprint http://camel.apache.org/schema/spring/camel-blueprint.xsd"
           >
<bean id="jpa" class="org.apache.camel.component.jpa.JpaComponent">
   <property name="joinTransaction" value="false"/>
</bean>
   <cm:property-placeholder persistent-id="application">
    </cm:property-placeholder>
  <camelContext xmlns="http://camel.apache.org/schema/blueprint"> 
    <package>com.abc.routes</package>
    </camelContext>
</blueprint>
  • 骆驼3.3.0,卡拉夫4.2.10
  • 路由使用JavaDSL
  • 在Karaf上,我安装了MSSQL数据源,运行良好
  • 我的骆驼上下文:

        <?xml version="1.0" encoding="UTF-8"?>
    <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0"
            xsi:schemaLocation="
                http://www.osgi.org/xmlns/blueprint/v1.0.0 https://osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
                http://camel.apache.org/schema/blueprint http://camel.apache.org/schema/spring/camel-blueprint.xsd"
               >
    <bean id="jpa" class="org.apache.camel.component.jpa.JpaComponent">
       <property name="joinTransaction" value="false"/>
    </bean>
       <cm:property-placeholder persistent-id="application">
        </cm:property-placeholder>
      <camelContext xmlns="http://camel.apache.org/schema/blueprint"> 
        <package>com.abc.routes</package>
        </camelContext>
    </blueprint>
    

    有人能帮忙吗?一个多月以来,我一直在努力解决这个问题。类似的问题也有解决方案,但卡拉夫驼峰就没有了。

    我自己解决了。问题出在persistence.xml中。事务类型设置为“RESOURCE_LOCAL”,我改为JTA并添加了一个JTA数据源。

    您是否尝试使路由事务化<代码>从(“任何”).Transact()到(“jpa://entityClass)。这可能是必需的,因为您已经在JPA组件上显式地设置了joinTransaction=false。同样的结果。