没有正在进行的交易-Karaf+;骆驼3.3。0+;JPA
我一直在尝试实现一个简单的Camel+karafwebservice,它使用Camel-JPA将实体保存到数据库中,但没有成功。我面临的问题是,当我尝试使用保存数据到(“jpa://entityClass)我得到以下例外情况:没有正在进行的交易-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
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>
<?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。同样的结果。