0

次の技術スタックを使用して、同じトランザクション内から 2 つの永続ユニットに接続する際に問題があります。

WLS 10.3.x, Eclipselink 2.1, Oracle 11g JDBC driver, Informix 10 JDBC driver

この SO投稿からの入力を使用して、Oracle データソースを XA 準拠にし、Informix ds を「2 フェーズ コミットをエミュレート」すると、動作が開始されました。しかし、今私は奇妙な問題を抱えています。

スタンドアロンの Java クライアントを使用して、JPA エンティティを呼び出す ejb 3 SLSB を呼び出しています。私が直面している問題は、最初は動作し、2 回目は例外をスローしませんが、どちらのデータベースのデータも更新せず、3 回目はアプリケーションが既にコミットされているかのように「トランザクションは既にコミットされています」という例外をスローします。サーバー JTA トランザクション マネージャーは、元のトランザクション コンテキストを保持しています。これらの 3 つの呼び出しは個別かつ順次であり、すべての呼び出しはクライアントがクライアント プロセスを終了することで完了することに注意してください。この問題は非常に一貫しており、アプリ サーバーを再起動するたびにまったく同じ順序で発生します。

ご意見をお待ちしております。

4

1 に答える 1

0
<persistence-unit name="TopLinkDB" transaction-type="JTA">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <jta-data-source>jdbc/oracleDS</jta-data-source>
    <class>com.home.domain.Property</class>
    <properties>
        <property name="eclipselink.target-server" value="WebLogic_10" />
    </properties>
</persistence-unit>     
<persistence-unit name="TopLinkINFO" transaction-type="JTA">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <jta-data-source>jdbc/infoDS</jta-data-source>
    <class>com.home.domain.GlobalNumber</class>
    <properties>
        <property name="eclipselink.target-server" value="WebLogic_10" />
    </properties>
</persistence-unit>
于 2010-09-02T07:02:32.763 に答える