21.4. 런타임 제어


21.4.1. 개요

클라이언트 코드에서 org.apache.cxf.ws.rm.RMManager 클래스의 공개 상수로 정의된 키 값을 런타임 시 제어하도록 여러 메시지 컨텍스트 속성 값을 설정할 수 있습니다.

21.4.2. 런타임 제어 옵션

다음 표에는 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

문자열 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

WS-RM 코드에 마지막 메시지가 전송되고 있음을 알리는 부울 값 true 로 코드가 WS-RM 시퀀스 및 릴리스 리소스(CXF의 3.0.0 버전부터)를 닫을 수 있습니다(클라이언트를 닫을 때 WS-RM은 기본적으로 RM 시퀀스를 종료합니다).

WSRM_INACTIVITY_TIMEOUT_PROPERTY

밀리초 단위의 긴 비활성 타임아웃입니다.

WSRM_RETRANSMISSION_INTERVAL_PROPERTY

밀리초 단위의 긴 기본 재전송 간격입니다.

WSRM_EXPONENTIAL_BACKOFF_PROPERTY

부울 지수 백오프 플래그입니다.

WSRM_ACKNOWLEDGEMENT_INTERVAL_PROPERTY

밀리초 단위의 긴 승인 간격입니다.

21.4.3. WS-RM에서 Cryostat 제어

Apache CXF의 Cryostat 관리 기능을 사용하여 WS-RM의 여러 측면을 모니터링하고 제어할 수도 있습니다. Cryostat 작업의 전체 목록은 org.apache.cxf.ws.rm.ManagedRMManagerorg.apache.cxf.ws.rm.ManagedRMEndpoint 에 의해 정의되지만 이러한 작업에는 현재 RM 상태를 개별 메시지 수준으로 보는 작업이 포함됩니다. JXM을 사용하여 WS-RM 시퀀스를 종료하거나 종료하고, 원격 RM 엔드포인트에서 이전에 메시지를 승인할 때 알림을 받을 수도 있습니다.

21.4.4. Cryostat 제어의 예

예를 들어 클라이언트 구성에 Cryostat 서버가 활성화된 경우 다음 코드를 사용하여 수신된 마지막 승인 번호를 추적할 수 있습니다.

// 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은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.