Menu Close

21.6. WS-RM 永続性の設定

概要

本章ですでに説明した Apache CXF WS-RM 機能は、ネットワーク障害などが発生した場合の信頼性を提供します。WS-RM の永続性は、RM ソースや RM 宛先のクラッシュなど、他のタイプの障害に対して信頼性を提供します。

WS-RM の永続性では、さまざまな RM エンドポイントの状態を永続ストレージに保存します。これにより、エンドポイントが復帰すると、メッセージの送受信を継続できます。

Apache CXF では、設定ファイルで WS-RM 永続性を有効にします。デフォルトの WS-RM 永続性ストアは JDBC ベースです。利便性のために、Apache CXF には直ちにデプロイできるように Derby が含まれています。さらに、永続ストアも Java API を使用して公開されます。専用の永続性メカニズムを実装するには、任意の DB と共にこの API を使用して実装できます。

重要

WS-RM の永続性は一方向呼び出しにのみ対応し、デフォルトで無効になっています。

その仕組み

Apache CXF WS-RM の永続性は以下のように動作します。

  • RM ソースエンドポイントでは、送信前に送信メッセージが永続化されます。確認応答を受け取ると、永続ストアからエビクトされます。
  • クラッシュからの復帰後、永続化されたメッセージを復元し、すべてのメッセージが確認されるまで再送信します。この時点で、RM シーケンスが閉じられます。
  • RM 宛先エンドポイントでは、受信メッセージが永続化され、ストアに成功した場合、確認応答が送信されます。メッセージが正常にディスパッチされると、永続ストアからエビクトされます。
  • クラッシュからの復帰後、永続化されたメッセージを復元し、それらをディスパッチします。また、RM シーケンスを新しいメッセージの受け取り、確認および配信ができる状態にします。

WS 永続性の有効化

WS-RM の永続性を有効にするには、WS-RM の永続ストアを実装するオブジェクトを指定する必要があります。専用のストアを開発することや、Apache CXF に同梱される JDBC ベースのストアを使用することができます。

例21.14「デフォルトの WS-RM 永続性ストアの設定」に記載されている設定では、Apache CXF に同梱される JDBC ベースのストアを有効にします。

例21.14 デフォルトの WS-RM 永続性ストアの設定

<bean id="RMTxStore" class="org.apache.cxf.ws.rm.persistence.jdbc.RMTxStore"/>
<wsrm-mgr:rmManager id="org.apache.cxf.ws.rm.RMManager">
    <property name="store" ref="RMTxStore"/>
</wsrm-mgr:rmManager>

WS 永続性の設定

Apache CXF に含まれた JDBC ベースのストアは、表21.4「JDBC ストアのプロパティー」にあるプロパティーをサポートします。

表21.4 JDBC ストアのプロパティー

属性名デフォルト設定

driverClassName

String

org.apache.derby.jdbc.EmbeddedDriver

userName

String

null

passWord

String

null

url

String

jdbc:derby:rmdb;create=true

例21.15「WS-RM 永続性の JDBC ストアの設定」に記載されている設定では、Apache CXF に同梱される JDBC ベースのストアを有効にし、driverClassName および url をデフォルト以外の値に設定します。

例21.15 WS-RM 永続性の JDBC ストアの設定

<bean id="RMTxStore" class="org.apache.cxf.ws.rm.persistence.jdbc.RMTxStore">
    <property name="driverClassName" value="com.acme.jdbc.Driver"/>
    <property name="url" value="jdbc:acme:rmdb;create=true"/>
</bean>