JAX-WS를 사용하여 전송 헤더 검색
JAX-WS(Java™ API for XML-Based Web Services) 웹 서비스 클라이언트를 사용으로 설정하여 전송 헤더에서 값을 검색할 수 있습니다. HTTP를 사용하는 요청의 경우 전송 헤더는 HTTP 응답 메시지에 있는 HTTP 헤더에서 검색됩니다. JMS(Java Message Service)를 사용하는 요청의 경우 JMS 응답 메시지에 있는 JMS 메시지 특성에서 전송 헤더가 검색됩니다.
시작하기 전에
전송 헤더를 검색하는 것은 웹 서비스 클라이언트에 의해서만 지원되며 HTTP 및 JMS 전송에 대해서 지원됩니다. 웹 서비스 클라이언트는 게이트웨이 기능과 같은 중간 계층을 통하지 않고 직접 JAX-WS API를 호출해야 합니다.
이 태스크 정보
JAX-WS 프로그래밍 모델을 사용하는 경우 전송 헤더에서 값을 검색하려면 클라이언트가 BindingProvider의 RequestContext 오브젝트에서 특성을 설정해야 합니다. 이 특성을 설정하면 연관된 특성이 null로 설정되거나 BindingProvider 오브젝트가 버려질 때까지 해당 BindingProvider 오브젝트에 대한 후속 메소드 호출의 응답에서 값을 읽습니다.
인바운드 응답의 전송 헤더에서 값을 검색하려면 다음과 같이 클라이언트 코드를 수정하십시오.
프로시저
결과
수신되는 응답 메시지에서 전송 헤더를 수신할 수 있는 JAX-WS 웹 서비스가 있습니다.
예
public class MyApplicationClass {
// Inject an instance of the service's port-type.
@WebServiceRef(EchoService.class)
private EchoPortType port;
// This method will invoke the web service operation and retrieve transport headers on the request.
public void invokeService() {
// Set up the Map to retrieive our response headers.
Map<String, Object> responseHeaders = new HashMap<String, Object>;
responseHeaders.put(“MyHeader1”, null);
responseHeaders.put(“MyHeader2”, null);
responseHeaders.put(“MyHeader3”, null);
// Set the Map as a property on the RequestContext.
BindingProvider bp = (BindingProvider) port;
bp.getRequestContext().put(com.ibm.websphere.webservices.Constants.RESPONSE_TRANSPORT_PROPERTIES, responseHeaders);
// Invoke the web services operation.
String result = port.echoString(“Hello, world!”);
// Now retrieve our response headers.
Object header1 = responseHeaders.get(“MyHeader1”);
Object header2 = responseHeaders.get(“MyHeader2”);
Object header3 = responseHeaders.get(“MyHeader3”);
}
}