Camel事务配置问题:javax.persistence.TransactionRequiredException

时间:2013-04-02 06:54:29

标签: spring transactions apache-camel

我在Camel 2.10.4路由中配置JMS事务。当我运行我的应用时,会抛出javax.persistence.TransactionRequiredException: no transaction in progress。根据我的研究,我发现当没有方法被标记为@Transactional时会抛出此异常。我的应用程序上下文XML配置文件中的相关部分显示为:

<bean id="txMgr" class="org.springframework.jms.connection.JmsTransactionManager">
    <property name="connectionFactory" ref="pooledConnectionFactory" />
</bean>

<bean id="REQUIRED" class="org.apache.camel.spring.spi.SpringTransactionPolicy">
    <property name="transactionManager" ref="txMgr" />
    <property name="propagationBehaviorName" value="PROPAGATION_REQUIRED" />
</bean>

<bean id="pooledConnectionFactory" 
   class="org.apache.activemq.pool.PooledConnectionFactory" init-method="start" destroy-method="stop">
   <property name="maxConnections" value="8" />
   <property name="connectionFactory" ref="jmsConnectionFactory" />
</bean>

<bean id="jmsConnectionFactory" 
   class="org.apache.activemq.ActiveMQConnectionFactory">
   <property name="brokerURL" value="tcp://localhost:61616" />
</bean>

<bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent">
    <property name="configuration" ref="jmsConfig" />
</bean>

<bean id="jmsConfig" 
   class="org.apache.camel.component.jms.JmsConfiguration">
   <property name="connectionFactory" ref="pooledConnectionFactory"/>
   <property name="transacted" value="true" />
   <property name="transactionManager" ref="txMgr" />
   <property name="concurrentConsumers" value="3"/>
</bean>

除了特定于JMS的配置外,我还有JPA配置,如下所示:

<bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate">
    <property name="transactionManager">
        <bean class="org.springframework.orm.jpa.JpaTransactionManager">
            <property name="entityManagerFactory" ref="entityManagerFactory" />
        </bean>
    </property>
</bean>

<bean id="jpaTemplate" class="org.springframework.orm.jpa.JpaTemplate">
    <property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
    <property name="persistenceUnitName" value="fileRecord" />
</bean>

如果我禁用了交易,则配置有效。但是,当我启用它时,所有其他步骤都会成功,除了将数据插入数据库的位(在JPA端点处)。

对于我需要更改或添加的内容的任何建议都将非常感激。

0 个答案:

没有答案
相关问题