14.4. JMS トランザクションの設定


概要

CXF 3.0 は、一方向メッセージングを使用する場合、CXF エンドポイントでローカル JMS トランザクションと JTA トランザクションの両方をサポートします。

ローカルトランザクション

ローカルリソースを使用するトランザクションは、例外が発生した場合にのみ JMS メッセージをロールバックします。データベーストランザクションなどの他のリソースを直接調整することはありません。

ローカルトランザクションを設定するには、通常通りにエンドポイントを設定し、sessionTrasnsacted プロパティーを true に設定します。

注記

トランザクションとプーリングの詳細は、Red Hat JBoss Fuse トランザクションガイド を参照してください。

JTA トランザクション

JTA トランザクションを使用すると、任意の数の XA リソースを調整できます。CXF エンドポイントが JTA トランザクション用に設定されている場合、サービス実装を呼び出す前にトランザクションを開始します。例外が発生しなければ、トランザクションはコミットされます。それ以外の場合は、ロールバックされます。

JTA トランザクションでは、JMS メッセージが消費され、データがデータベースに書き込まれます。例外が発生すると、両方のリソースがロールバックされるため、メッセージが消費されてデータがデータベースに書き込まれるか、メッセージがロールバックされてデータがデータベースに書き込まれません。

JTA トランザクションの設定には、次の 2 つの手順が必要です。

  1. トランザクションマネージャーの定義

    • Bean メソッド

      • トランザクションマネージャーの定義

        <bean id="transactionManager"
           class="org.apache.geronimo.transaction.manager.GeronimoTransactionManager"/>
      • JMS URI でトランザクションマネージャーの名前を設定します

        jms:queue:myqueue?jndiTransactionManager=TransactionManager

        この例では、ID TransactionManager の Bean を検索します。

    • OSGi 参照方法

      • ブループリントを使用して、トランザクションマネージャーを OSGi サービスとして検索します

        <reference id="TransactionManager" interface="javax.transaction.TransactionManager"/>
      • JMS URI でトランザクションマネージャーの名前を設定します

        jms:jndi:myqueue?jndiTransactionManager=java:comp/env/TransactionManager

        この例では、JNDI でトランザクションマネージャーを検索します。

  2. JCA プール接続ファクトリーの設定

    Spring を使用して JCA プールされた接続ファクトリーを定義します。

    <bean id="xacf" class="org.apache.activemq.ActiveMQXAConnectionFactory">
      <property name="brokerURL" value="tcp://localhost:61616" />
    </bean>
    
    <bean id="ConnectionFactory" class="org.apache.activemq.jms.pool.JcaPooledConnectionFactory">
      <property name="transactionManager" ref="transactionManager" />
      <property name="connectionFactory" ref="xacf" />
    </bean>

    この例では、最初の Bean は JcaPooledConnectionFactory に指定される ActiveMQ XA 接続ファクトリーを定義します。JcaPooledConnectionFactory は id ConnectionFactory のデフォルトの Bean として提供されます。

    JcaPooledConnectionFactory は通常の ConnectionFactory のようになることに注意してください。ただし、新しい接続とセッションが開かれると、XA トランザクションがチェックされ、見つかった場合は、JMS セッションが XA リソースとして自動的に登録されます。これにより、JMS セッションが JMS トランザクションに参加できるようになります。

    重要

    JMS トランスポートに XA ConnectionFactory を直接設定することはできません。

Red Hat logoGithubRedditYoutube

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.