検索

21.4. ランタイム制御

download PDF

概要

org.apache.cxf.ws.rm.RMManager クラスのパブリック定数で定義されたキー値を使用して、クライアントコードで複数のメッセージコンテキストプロパティー値を設定して WS-RM を制御できます。

ランタイム制御オプション

以下の表は、org.apache.cxf.ws.rm.RMManager クラスによって定義されるキーの一覧です。

キー説明

WSRM_VERSION_PROPERTY

文字列の WS-RM バージョン名前空間 (http://schemas.xmlsoap.org/ws/2005/02/rm/ または http://docs.oasis-open.org/ws-rx/wsrm/200702)。

WSRM_WSA_VERSION_PROPERTY

String WS-Addressing バージョンネームスペース (http://schemas.xmlsoap.org/ws/2004/08/addressing または http://www.w3.org/2005/08/addressing) - このプロパティーは、http://schemas.xmlsoap.org/ws/2005/02/rm/ RM ネームスペースを使用していない限りは無視されます)。

WSRM_LAST_MESSAGE_PROPERTY

ブール値 true で、最後のメッセージが送信されたことを WS-RM コードに指示し、コードが WS-RM シーケンスおよびリリースリソースを表示できるようにします (C 3.0.0 バージョンの CXF より、クライアントを閉じると WS-RM はデフォルトで RM シーケンスを閉じます)。

WSRM_INACTIVITY_TIMEOUT_PROPERTY

ミリ秒単位の長い非アクティブタイムアウト。

WSRM_RETRANSMISSION_INTERVAL_PROPERTY

ミリ秒単位の長いベース再送信間隔。

WSRM_EXPONENTIAL_BACKOFF_PROPERTY

ブール値バックオフフラグ。

WSRM_ACKNOWLEDGEMENT_INTERVAL_PROPERTY

ミリ秒単位の長い確認応答間隔。

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
...
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.