第7章 JBoss Messaging XA 復元の設定

このセクションでは JBoss Enterprise Application Platform の JBoss Messaging リソースに対して XA 復元を処理するための JBoss Transactions の設定方法について説明しています。
JBoss Transactions Recovery Manager は継続的に JBoss Messaging XA リソースをポーリングして復元するように設定できます。これにより、トランザクションで高い耐久性が実現します。
JBoss Transactions Recovery Manager を有効にするには、$JBOSS_HOME/server/$PROFILE/conf/jbossts-properties.xml に 1 行追加します。次のコードの断片に必要な行が含まれています。
<properties depends="arjuna" name="jta">
  <!--
  Support subtransactions in the JTA layer?
  Default is NO.
  -->
  <property name="com.arjuna.ats.jta.supportSubtransactions" value="NO"/>
  <property name="com.arjuna.ats.jta.jtaTMImplementation"
      value="com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionManagerImple"/>
  <property name="com.arjuna.ats.jta.jtaUTImplementation"
      value="com.arjuna.ats.internal.jta.transaction.arjunacore.UserTransactionImple"/>      
  <!--
      *** Add this line to enable recovery for JMS resources using DefaultJMSProvider ***
  -->
  <property name="com.arjuna.ats.jta.recovery.XAResourceRecovery.JBMESSAGING1"
      value="org.jboss.jms.server.recovery.MessagingXAResourceRecovery;java:/DefaultJMSProvider"/>

</properties>
上記の例では、Recovery Manager は JMS プロバイダローダーの DefaultJMSProvider を使用して JMS リソースの復元を試行しています。
DefaultJMSProvider には JBoss Enterprise Application Platform が同梱しています。これは $JBOSS_HOME/server/$PROFILE/conf/jms-ds.xml (または、クラスタ環境 hajndi-jms-ds.xml) で定義されています。異なる JMS プロバイダローダー(リモート JMS プロバイダに対応するものなど)で復元を実行するには、プロパティファイルにもう 1 行追加し、DefaultJMSProvider の代わりにご使用のリモートプロバイダを指定します。ご使用のプロバイダ名は、その管理 Bean 設定ファイルに一覧表示されているはずです。
プロバイダにはそれぞれ固有の名前が必要です。例えば、com.arjuna.ats.jta.recovery.XAResourceRecovery.JBMESSAGING1com.arjuna.ats.jta.recovery.XAResourceRecovery.JBMESSAGING2 などです。
復元は復元可能な XAResources を実装する JMS プロバイダならいずれでも動作するはずです (つまり XAResource.recover() を正しく実装しているということです)。
クラスタのノードから復元を行う Recovery Manager の場合、クラスタ内のすべてのノードの hajndi-jms-ds.xml でそれぞれ 1 行追加する必要があります。