21.4. 런타임 제어
21.4.1. 개요
클라이언트 코드에서 org.apache.cxf.ws.rm.RMManager
클래스의 공개 상수로 정의된 키 값을 런타임 시 제어하도록 여러 메시지 컨텍스트 속성 값을 설정할 수 있습니다.
21.4.2. 런타임 제어 옵션
다음 표에는 org.apache.cxf.ws.rm.RMManager
클래스에서 정의한 키가 나열되어 있습니다.
키 | 설명 |
---|---|
|
문자열 WS-RM 버전 네임스페이스( |
|
문자열 WS-Addressing 버전 네임스페이스( |
|
WS-RM 코드에 마지막 메시지가 전송되고 있음을 알리는 부울 값 |
| 밀리초 단위의 긴 비활성 타임아웃입니다. |
| 밀리초 단위의 긴 기본 재전송 간격입니다. |
| 부울 지수 백오프 플래그입니다. |
| 밀리초 단위의 긴 승인 간격입니다. |
21.4.3. WS-RM에서 Cryostat 제어
Apache CXF의 Cryostat 관리 기능을 사용하여 WS-RM의 여러 측면을 모니터링하고 제어할 수도 있습니다. Cryostat 작업의 전체 목록은 org.apache.cxf.ws.rm.ManagedRMManager
및 org.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 ...