JAX-WS를 사용하여 전송 헤더 검색

JAX-WS(Java™ API for XML-Based Web Services) 웹 서비스 클라이언트를 사용으로 설정하여 전송 헤더에서 값을 검색할 수 있습니다. HTTP를 사용하는 요청의 경우 전송 헤더는 HTTP 응답 메시지에 있는 HTTP 헤더에서 검색됩니다. JMS(Java Message Service)를 사용하는 요청의 경우 JMS 응답 메시지에 있는 JMS 메시지 특성에서 전송 헤더가 검색됩니다.

시작하기 전에

전송 헤더를 검색하기 위해 사용으로 설정할 수 있는 JAX-WS 웹 서비스 클라이언트가 필요합니다.

전송 헤더를 검색하는 것은 웹 서비스 클라이언트에 의해서만 지원되며 HTTP 및 JMS 전송에 대해서 지원됩니다. 웹 서비스 클라이언트는 게이트웨이 기능과 같은 중간 계층을 통하지 않고 직접 JAX-WS API를 호출해야 합니다.

이 태스크 정보

JAX-WS 프로그래밍 모델을 사용하는 경우 전송 헤더에서 값을 검색하려면 클라이언트가 BindingProvider의 RequestContext 오브젝트에서 특성을 설정해야 합니다. 이 특성을 설정하면 연관된 특성이 null로 설정되거나 BindingProvider 오브젝트가 버려질 때까지 해당 BindingProvider 오브젝트에 대한 후속 메소드 호출의 응답에서 값을 읽습니다.

인바운드 응답의 전송 헤더에서 값을 검색하려면 다음과 같이 클라이언트 코드를 수정하십시오.

프로시저

  1. 응답 메시지에서 검색된 전송 헤더를 보유할 java.util.Map 오브젝트를 작성하십시오. 응답 메시지에서 모든 전송 헤더를 검색하려면 이 맵을 비어 있는 상태로 두십시오.
  2. (선택사항) 수신되는 응답 메시지에서 검색할 각 헤더의 맵에 항목을 추가하십시오.
    1. 맵 항목 키를 전송 헤더 ID와 정확하게 일치하는 문자열로 설정하십시오. 예약 헤더 이름(예: HTTP의 경우에 Cookie)을 사용하여 헤더 ID를 정의할 수 있습니다. 또는 헤더 ID를 사용자가 정의할 수 있습니다(예: MyTransportHeader). 특정 헤더 ID는 고유한 방식으로 처리되지만 헤더 ID 값을 확인하기 위한 다른 검사는 수행되지 않습니다. 특별히 고려해야 하는 점이 있는 HTTP 헤더 ID에 대해 자세히 알아보려면 전송 헤더 특성 우수 사례를 읽어 보십시오. com.ibm.websphere.webservices.Constants 클래스에서 공통 헤더 ID 문자열 상수(예: HTTP_HEADER_SET_COOKIE)를 찾을 수 있습니다. 맵 항목 값은 무시되고 설정할 필요가 없습니다. 예를 들면, 널이 아니지만 어떠한 키도 들어 있지 않은 비어 있는 맵의 경우 응답에서 모든 전송 헤더가 검색됩니다.
  3. com.ibm.websphere.webservices.Constants.RESPONSE_TRANSPORT_PROPERTIES 특성을 사용하여 BindingProvider의 RequestContext에서 맵 오브젝트를 설정하십시오. 맵이 설정되면 응답에서 헤더를 검색하기 위해 RESPONSE_TRANSPORT_PROPERTIES 특성이 후속 호출에서 사용됩니다. 이 특성을 null로 설정하면 응답에서 헤더가 검색되지 않습니다. 이러한 특성에 대해 자세히 알아보려면 전송 헤더 특성 문서를 참조하십시오.
  4. BindingProvider 인스턴스에 대해 원격 메소드 호출을 호출하십시오. 지정된 전송 헤더의 값이 응답 메시지에서 검색되어 맵에 배치됩니다.
    이 특성이 올바르게 설정되지 않으면 WebServiceException 오류의 원인이 되는 API 사용 오류가 발생할 수 있습니다. 다음 요구사항이 충족되어야 하며 그렇지 않을 경우 프로세스가 실패합니다.
    • BindingProvider의 RequestContext 인스턴스에서 설정되는 Constants.RESPONSE_TRANSPORT_PROPERTIES 특성 값은 null이거나 java.util.Map의 인스턴스여야 합니다.
    • 모든 맵 키는 java.lang.String 데이터 유형이어야 하고 키는 널이 아니어야 합니다.
    • 맵은 비어 있을 수 있으며 이는 맵에 항목이 전혀 없을 수 있음을 의미합니다. 이 경우 모든 전송 헤더가 응답 메시지에서 검색됩니다.

결과

수신되는 응답 메시지에서 전송 헤더를 수신할 수 있는 JAX-WS 웹 서비스가 있습니다.

다음은 응답 전송 헤더가 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”);

    }
}

주제 유형을 표시하는 아이콘 태스크 주제



시간소인 아이콘 마지막 업데이트 날짜: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_retrievecookiejaxws
파일 이름:twbs_retrievecookiejaxws.html