2

Camel 2.10.4 ルートで JMS トランザクションを構成しています。アプリを実行すると、 ajavax.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 エンドポイントで) データベースにデータを挿入する部分を除いて、他のすべての手順が成功します。

何を変更または追加する必要があるかについての提案は、非常に高く評価されます。

4

0 に答える 0