21.6. WS-RM 永続性の設定

概要

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

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

Apache CXF は、設定ファイルで WS-RM の永続性を有効にします。デフォルトの WS-RM 永続ストアは JDBC ベースです。便宜上、Apache CXF には、すぐに使用できる展開用の Derby が含まれています。さらに、永続ストアも Java API を使用して公開されます。独自の永続化メカニズムを実装するには、この API と優先 DB を使用して永続化メカニズムを実装できます。

重要

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

文字列

org.apache.derby.jdbc.EmbeddedDriver

userName

文字列

null

passWord

文字列

null

url

文字列

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>