4

Spring の宣言型トランザクション管理を使用するアプリケーションがあります。アプリケーションが TomEE の JTA トランザクション マネージャーを使用するように、これを TomEE+ コンテナーにデプロイするにはどうすればよいですか?

より具体的には、Spring の「application-context.xml」ファイル内から組み込みのトランザクション マネージャーを参照するにはどうすればよいですか?

Spring のトランザクション管理構成は、Bean 参照または JNDI ルックアップのいずれかによってトランザクション マネージャーをルックアップする必要があるようです。私はこれを調査し、ソース コードを調べるのに 1 日を費やしました。この問題に関する多くの議論を見つけました (以下の参照) が、決定的なハウツーはありません。

アプリケーションの META-INF/persistence.xml にあるのは次のとおりです。

<persistence-unit name="myPersistenceUnit" transaction-type="JTA">
    <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
    <jta-data-source>myDs-managed</jta-data-source>
    <non-jta-data-source>myDs-unmanaged</non-jta-data-source>
    <properties>
        <property name="openjpa.jdbc.DBDictionary" 
            value="org.apache.openjpa.jdbc.sql.PostgresDictionary"/>       
        <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema"/>
        <property name="openjpa.Run
        <property name="openjpa.Log" value="slf4j" />
    </properties>
</persistence-unit>

そして、アプリケーションの META-INF/spring/applicationContext.xml ファイルには次のものがあります:

<tx:annotation-driven mode="aspectj" transaction-manager="txManager" />
<bean class="org.springframework.transaction.jta.JtaTransactionManager"
        id="txManager">
        <property name="transactionManagerName" 
                       value=" java:comp/TransactionManager"/>
</bean>

JBoss で動作すると主張されている例を次に示します。Spring JTA 構成 - TransactionManager を設定する方法は?

これは、xml 構成ファイルで機能しないニアミスです: https://issues.apache.org/jira/browse/TOMEE-38

initialContext を使用している場合の Java コード内での実行方法は次のとおりです。

[編集: Tomee のドキュメントでは、トランザクション マネージャーを宣言する方法について説明していますが、個々の Web アプリケーションではなくサーバーに属する Tomee.xml で行うように指示されています。サーバー全体ではなく、単一のアプリに対してトランザクションマネージャーを構成したい: http://tomee.apache.org/containers-and-resources.html]

4

1 に答える 1

3

java:comp/env/TransactionManagertransactionManagerNameを試しましたか? また、ここで説明されているように、TransactionManager と DataSource を宣言しましたか: http://tomee.apache.org/containers-and-resources.html ?

于 2013-07-04T10:20:47.410 に答える