42.4.3. JMS 속성 설정
초록
소비자 끝점에서 요청 컨텍스트를 사용하여 여러 JMS 메시지 헤더 속성 및 소비자 끝점의 제한 값을 설정할 수 있습니다. 이러한 속성은 단일 호출에 유효합니다. 서비스 프록시에서 작업을 호출할 때마다 다시 설정해야 합니다.
서비스에 헤더 속성을 설정할 수 없습니다.
42.4.3.1. JMS 헤더 속성
표 42.4. “settable JMS Header Properties” 소비자 엔드포인트의 요청 컨텍스트를 사용하여 설정할 수 있는 JMS 헤더의 속성을 나열합니다.
속성 이름 | 속성 유형 | setter Method |
---|---|---|
ID 상관 관계 |
|
|
전송 모드 |
|
|
우선 순위 |
|
|
라이브 시간 |
|
|
-
org.apache.cxf.transports.jms.context.JMSMessageHeadersType
오브젝트를 생성합니다. - 표 42.4. “settable JMS Header Properties” 에 설명된 적절한 설정 방법을 사용하여 설정할 값을 채웁니다.
-
org.apache.cxf.transports.jms.JMSConstants.JMS_CLIENT_REQUEST_HEADERS를 첫 번째 인수로, 새
JMSMessageHeadersType
오브젝트를 두 번째 인수로 호출하여 요청 컨텍스트의put()
메서드를 요청 컨텍스트로 설정합니다.
42.4.3.2. 선택적 JMS 헤더 속성
선택적 속성을 JMS 헤더로 설정할 수도 있습니다. 선택적 JMS 헤더 속성은 다른 JMS 헤더 속성을 설정하는 데 사용되는 JMSMessageHeadersType
오브젝트에 저장됩니다. 이러한 개체는 org.apache.cxf.transports.jms.context.JMSPropertyType
개체가 포함된 List
오브젝트로 저장됩니다. JMS 헤더에 선택적 속성을 추가하려면 다음을 수행합니다.
-
JMSPropertyType
오브젝트를 생성합니다. -
setName()
을 사용하여 속성의 이름을 설정합니다. -
setValue()
를 사용하여 속성의 값 필드를 설정합니다. -
JMSMessageHeadersType.getProperty().add(JMSPropertyType)
를 사용하여 JMS 메시지 헤더에 속성을 추가합니다. - 모든 속성이 메시지 헤더에 추가될 때까지 절차를 반복합니다.
42.4.3.3. client Receive Timeout
JMS 헤더 속성 외에도 소비자 엔드포인트가 시간 초과하기 전에 응답을 대기하는 시간을 설정할 수 있습니다. org.apache.cxf.transports.jms.JMSConstants.JMSConstants.JMSConstants.JMS_CLIENT_RECEIVE_TIMEOUT을 사용하여 요청 컨텍스트의 put()
메서드를 호출하고 소비자가 두 번째 인수로 대기하도록 시간(밀리초)을 나타내는 긴
값을 설정합니다.
42.4.3.4. 예제
예 42.15. “요청 컨텍스트를 사용하여 JMS 속성 설정” 요청 컨텍스트를 사용하여 일부 JMS 속성을 설정하는 코드를 표시합니다.
예 42.15. 요청 컨텍스트를 사용하여 JMS 속성 설정
import org.apache.cxf.transports.jms.context.*; // Proxy greeter initialized previously InvocationHandler handler = Proxy.getInvocationHandler(greeter); BindingProvider bp= null; if (handler instanceof BindingProvider) { bp = (BindingProvider)handler; Map<String, Object> requestContext = bp.getRequestContext(); JMSMessageHeadersType requestHdr = new JMSMessageHeadersType(); requestHdr.setJMSCorrelationID("WithBob"); requestHdr.setJMSExpiration(3600000L); JMSPropertyType prop = new JMSPropertyType; prop.setName("MyProperty"); prop.setValue("Bluebird"); requestHdr.getProperty().add(prop); requestContext.put(JMSConstants.CLIENT_REQUEST_HEADERS, requestHdr); requestContext.put(JMSConstants.CLIENT_RECEIVE_TIMEOUT, new Long(1000)); }
예 42.15. “요청 컨텍스트를 사용하여 JMS 속성 설정” 의 코드는 다음을 수행합니다.
변경하려는 JMS 속성이 있는 프록시의 InvocationHandler
를 가져옵니다.
InvocationHandler
가 BindingProvider
인지 확인합니다.
반환된 InvocationHandler
개체를 BindingProvider 개체로 캐스팅하여 요청 컨텍스트를 검색합니다. casts the returned InvocationHandler object into a BindingProvider
object to retrieve the request context.
요청 컨텍스트를 가져옵니다.
새 메시지 헤더 값을 보유하는 JMSMessageHeadersType
오브젝트를 생성합니다.
Correlation ID를 설정합니다.
만료 속성을 60분으로 설정합니다.
새 JMSPropertyType
오브젝트를 생성합니다.
선택적 속성의 값을 설정합니다.
메시지 헤더에 선택적 속성을 추가합니다.
JMS 메시지 헤더 값을 요청 컨텍스트로 설정합니다.
클라이언트 수신 시간 초과 속성을 1초로 설정합니다.