42.4. JMS Message Properties 사용
초록
Apache CXF JMS 전송에는 JMS 메시지의 속성을 검사하는 데 사용할 수 있는 컨텍스트 메커니즘이 있습니다. 컨텍스트 메커니즘을 사용하여 JMS 메시지의 속성을 설정할 수도 있습니다.
42.4.1. JMS 메시지 헤더 검사
초록
소비자 및 서비스는 JMS 메시지 헤더 속성에 액세스하기 위해 다양한 컨텍스트 메커니즘을 사용합니다. 그러나 두 메커니즘 모두 헤더 속성을 org.apache.cxf.transports.jms.context.JMSMessageHeadersType
오브젝트로 반환합니다.
42.4.1.1. 서비스에서 JMS 메시지 헤더 가져오기
WebServiceContext
개체에서 JMS 메시지 헤더 속성을 가져오려면 다음을 수행합니다.
- “컨텍스트 가져오기” 에 설명된 대로 컨텍스트를 가져옵니다.
-
org.apache.cxf.transports.jms.JMSConstants.JMS_SERVER_HEADERS 매개 변수와 함께 메시지 컨텍스트의
get()
메서드를 사용하여 메시지 컨텍스트에서 메시지 헤더를 가져옵니다.
예 42.12. “서비스 구현에서 JMS 메시지 헤더 가져오기” 서비스의 메시지 컨텍스트에서 JMS 메시지 헤더를 가져오는 코드를 표시합니다.
예 42.12. 서비스 구현에서 JMS 메시지 헤더 가져오기
import org.apache.cxf.transport.jms.JMSConstants; import org.apache.cxf.transports.jms.context.JMSMessageHeadersType; @WebService(serviceName = "HelloWorldService", portName = "HelloWorldPort", endpointInterface = "org.apache.cxf.hello_world_jms.HelloWorldPortType", targetNamespace = "http://cxf.apache.org/hello_world_jms") public class GreeterImplTwoWayJMS implements HelloWorldPortType { @Resource protected WebServiceContext wsContext; ... @WebMethod public String greetMe(String me) { MessageContext mc = wsContext.getMessageContext(); JMSMessageHeadersType headers = (JMSMessageHeadersType) mc.get(JMSConstants.JMS_SERVER_HEADERS); ... } ... }
42.4.1.2. 소비자에서 JMS 메시지 헤더 속성 가져오기
메시지가 JMS 전송에서 성공적으로 검색되면 소비자의 응답 컨텍스트를 사용하여 JMS 헤더 속성을 검사할 수 있습니다. 또한 “client Receive Timeout” 에 설명된 대로 시간이 초과되기 전에 클라이언트가 대기하는 시간을 설정하거나 확인할 수 있습니다. 소비자의 응답 컨텍스트에서 JMS 메시지 헤더를 가져오려면 다음을 수행합니다.
- “컨텍스트 가져오기” 에 설명된 대로 응답 컨텍스트를 가져옵니다.
-
org.apache.cxf.transports.jms.JMSConstants.JMS_CLIENT_RESPONSE_HEADERS를 매개 변수로 사용하여 응답 컨텍스트에서 JMS 메시지 헤더 속성을 가져옵니다.
예 42.13. “소비자 응답 헤더에서 JMS 헤더 가져오기” 소비자의 응답 컨텍스트에서 JMS 메시지 헤더 속성을 가져오는 코드를 표시합니다.
예 42.13. 소비자 응답 헤더에서 JMS 헤더 가져오기
import org.apache.cxf.transports.jms.context.*; // Proxy greeter initialized previously BindingProvider bp = (BindingProvider)greeter; Map<String, Object> responseContext = bp.getResponseContext(); JMSMessageHeadersType responseHdr = (JMSMessageHeadersType) responseContext.get(JMSConstants.JMS_CLIENT_RESPONSE_HEADERS); ... }
예 42.13. “소비자 응답 헤더에서 JMS 헤더 가져오기” 의 코드는 다음을 수행합니다.
프록시를 BindingProvider로 캐스팅합니다.
응답 컨텍스트를 가져옵니다.
응답 컨텍스트에서 JMS 메시지 헤더를 검색합니다.