21.4. ランタイム制御
概要
org.apache.cxf.ws.rm.RMManager クラスのパブリック定数で定義されたキー値を使用して、クライアントコードで複数のメッセージコンテキストプロパティー値を設定して WS-RM を制御できます。
ランタイム制御オプション
以下の表は、org.apache.cxf.ws.rm.RMManager クラスによって定義されるキーの一覧です。
| キー | 説明 |
|---|---|
|
|
文字列の WS-RM バージョン名前空間 ( |
|
|
String WS-Addressing バージョンネームスペース ( |
|
|
ブール値 |
|
| ミリ秒単位の長い非アクティブタイムアウト。 |
|
| ミリ秒単位の長いベース再送信間隔。 |
|
| ブール値バックオフフラグ。 |
|
| ミリ秒単位の長い確認応答間隔。 |
JMX を介した WS-RM の制御
Apache CXF の JMX 管理機能を使用して、WS-RM の多くの側面を監視および制御することもできます。JMX 操作の完全な一覧は org.apache.cxf.ws.rm.ManagedRMManager および org.apache.cxf.ws.rm.ManagedRMEndpoint で定義されますが、これらの操作には現在の RM 状態を表示することが含まれます。JXM を使用して、WS-RM シーケンスを閉じたり終了したり、以前に送信されたメッセージがリモート RM エンドポイントによって確認されたときに通知を受信したりすることもできます。
JMX 制御の例
たとえば、クライアント設定で JMX サーバーを有効にしている場合は、次のコードを使用して、最後に受信した確認応答番号を追跡できます。
// Java
private static class AcknowledgementListener implements NotificationListener {
private volatile long lastAcknowledgement;
@Override
public void handleNotification(Notification notification, Object handback) {
if (notification instanceof AcknowledgementNotification) {
AcknowledgementNotification ack = (AcknowledgementNotification)notification;
lastAcknowledgement = ack.getMessageNumber();
}
}
// initialize client
...
// attach to JMX bean for notifications
// NOTE: you must have sent at least one message to initialize RM before executing this code
Endpoint ep = ClientProxy.getClient(client).getEndpoint();
InstrumentationManager im = bus.getExtension(InstrumentationManager.class);
MBeanServer mbs = im.getMBeanServer();
RMManager clientManager = bus.getExtension(RMManager.class);
ObjectName name = RMUtils.getManagedObjectName(clientManager, ep);
System.out.println("Looking for endpoint name " + name);
AcknowledgementListener listener = new AcknowledgementListener();
mbs.addNotificationListener(name, listener, null, null);
// send messages using RM with acknowledgement status reported to listener
...