전송 헤더 특성 우수 사례

웹 서비스 클라이언트가 전송 헤더를 전송하거나 검색할 수 있도록 JAX-RPC(Java™ API for XML-based RPC) 클라이언트 스텁, 호출 인스턴스 또는 JAX-WS(Java API for XML-Based Web services) BindingProvider의 RequestContext 인스턴스에서 REQUEST_TRANSPORT_PROPERTIES 특성 및 RESPONSE_TRANSPORT_PROPERTIES 특성을 설정할 수 있습니다.

우수 사례 우수 사례: 이러한 우수 사례를 사용하여 웹 서비스 클라이언트가 전송 헤더를 전송하거나 검색할 수 있도록 하십시오.bprac

REQUEST_TRANSPORT_PROPERTIES 우수 사례

일부 전송 헤더(예: HTTP 쿠키 헤더 및 Cookie2 헤더)에 여러 임베디드 값이 포함됩니다. 여러 값을 포함하는 헤더의 경우, 헤더 값이 다음 방식으로 작성되어야 합니다.
  • 헤더 값 내에 임베디드된 각 name=value 쌍은 세미콜론(;)으로 구분되어야 합니다.
  • 이름 및 해당 값은 등호(=) 기호로 구분되어야 합니다.
다음은 헤더 값이 작성되어야 하는 방법의 예제입니다.
name1=value1;name2=value2;name3=value3
사용자의 맵에 포함된 값은 출력 요청이 이미 맵에서 일치하는 헤더 ID를 포함하는 경우 이 요청이 추가되기 전에 구문 분석될 수 있습니다. 다중 임베디드 값을 포함하는 특정 전송 헤더의 경우, 맵의 헤더 값은 개별 name=value 컴포넌트로 구문 분석됩니다. 세미콜론(;)은 컴포넌트를 분리합니다. 예를 들어, name1=value1;name2=value2. 아래의 경우를 제외하고 각 name=value는 출력 헤더로 추가됩니다.
  • 출력 요청 헤더가 name 값을 포함합니다.

    이 경우, 서버 또는 웹 서비스 중 하나에 의해 출력 요청 헤더에 이미 설정된 name 값에 대한 값을 클라이언트가 겹쳐 쓰거나 수정하지 않도록 맵의 name=value는 조용히 무시됩니다.

  • 사용자의 헤더 값은 다중 name 값을 포함합니다.

    사용자 헤더 값이 다중 name 값을 포함할 때, 첫 번째 name 값이 사용되며 다른 것은 조용히 무시됩니다. 예를 들어, 사용자 헤더 값이 name1=value1;name2=value2;name1=value3을 포함하는 경우(이 경우, name1은 두 개 값), 첫 번째 값인 name1=value1이 사용됩니다. 다른 값 name1=value3은 조용히 무시됩니다.

RESPONSE_TRANSPORT_PROPERTIES 우수 사례

맵 키만이 사용되며 맵 값은 무시됩니다. 값은 전송 헤더를 검색하여 채워지며, 수신되는 응답 메시지로부터의 맵 키와 상응합니다. 빈 맵은 모든 전송 헤더와 연관 값이 수신되는 응답 메시지로부터 검색되도록 합니다.

특별한 고려 아래에서 처리되는 HTTP 헤더

HTTP 응답과 요청을 송신하고 검색할 때 다음 HTTP 헤더에는 특별한 고려가 부여됩니다.

이 헤더의 값은 다양한 방법으로 설정될 수 있습니다. 예를 들어, 일부 헤더 값은 배치 디스크립터 또는 바인딩 파일의 설정에 따라 전송됩니다. 이 경우, REQUEST_TRANSPORT_PROPERTIES를 통해 설정된 값은 다른 방법으로 설정된 값을 대체합니다.

표 1. HTTP 요청 및 응답 헤더 값. HTTP 응답 및 요청을 전송 및 검색할 때 HTTP 헤더에 대해 지정할 값
헤더 요청 전송 응답 검색
Transfer-encoding
  • transfer-encoding 헤더는 HTTP 1.0의 경우 무시됩니다.
  • HTTP 1.1을 사용하는 경우, 값이 chunked인 경우 transfer-encoding 헤더는 chunked로 설정됩니다.
특별한 처리는 없습니다.
Connection
  • connection 헤더는 HTTP 1.0의 경우 무시됩니다.
  • HTTP 1.1을 사용하는 경우, 다음 값이 설정됩니다.
    • 값이 "close"로 설정된 경우, 연결 헤더는 "close"로 설정됩니다.
    • 값이 "keep-alive"로 설정된 경우, 연결 헤더는 "keep-alive"로 설정됩니다.
    • 다른 값 설정은 모두 무시됩니다.
특별한 처리는 없습니다.
Expect
  • expect 헤더는 HTTP 1.0의 경우 무시됩니다.
  • HTTP 1.1을 사용하는 경우, 다음 값이 설정됩니다.
    • 값이 "100-continue"로 설정된 경우 connection 헤더는 "100-continue"로 설정됩니다.
    • 다른 값 설정은 모두 무시됩니다.
특별한 처리는 없습니다.
호스트 무시됨 특별한 처리는 없습니다.
Content-type 무시됨 특별한 처리는 없습니다.
SOAPAction 무시됨 특별한 처리는 없습니다.
Content-length 무시됨 특별한 처리는 없습니다.
Cookie

다음은 문자열 상수입니다. com.ibm.websphere.webservices.Constants.HTTP_HEADER_COOKIE

값이 올바르게 구조화되면 헤더에 전송됩니다. 헤더 값 형식과 맵 값에 대한 정보를 참조하십시오. 특별한 처리는 없습니다.
Cookie2

다음은 문자열 상수입니다. com.ibm.websphere.webservices.Constants.HTTP_HEADER_COOKIE2

"Cookie" 항목의 정보를 참조하십시오. 특별한 처리는 없습니다.
Set-cookie

다음은 문자열 상수입니다. com.ibm.websphere.webservices.Constants.HTTP_HEADER_SET_COOKIE

특별한 처리는 없습니다. MAINTAIN_SESSION 특성이 true로 설정된 경우, 전체 값은 SessionContext.CONTEXT_PROPERTY에 저장되며 Cookie 헤더의 후속 요청에 전송됩니다. 자세한 정보는 이 테이블의 Cookie 항목을 참조하십시오.
Set-cookie2

다음은 문자열 상수입니다. com.ibm.websphere.webservices.Constants.HTTP_HEADER_SET_COOKIE2

특별한 처리는 없습니다. MAINTAIN_SESSION 특성이 true로 설정된 경우, 전체 값은 SessionContext.CONTEXT_PROPERTY에 저장되며 Cookie 헤더의 후속 요청에 전송됩니다. 자세한 정보는 이 테이블의 Cookie 항목을 참조하십시오.

클라이언트 코드 예제

다음은 전송 헤더 값을 전송하고 검색하도록 웹 서비스 클라이언트를 코드하는 방법의 예제입니다.
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 send and receive transport headers.
    public void invokeService() {

        // Set up the Map that will contain the request headers.
        Map<String, Object>requestHeaders = new HashMap<String, Object>();
        requestHeaders.put(“Cookie”, “ClientAuthenticationToken=FFEEBBCC”);
        requestHeaders.put(“MyHeaderFlag”, new Boolean(true));

        // Set the Map as a property on the RequestContext.
        BindingProvider bp = (BindingProvider) port;
        bp.getRequestContext().put(com.ibm.websphere.webservices.Constants.REQUEST_TRANSPORT_PROPERTIES, requestHeaders);

        // Set up the Map to retrieve transport headers from the response message.
        Map<String, Object>responseHeaders = new HashMap<String, Object>();
        responseHeaders.put(“Set-Cookie”, null);
        responseHeaders.put(“MyHeaderFlag, null);

        // Invoke the web services operation.
        String result = port.echoString(“Hello, world!”);

        // Retrieve the headers from the response.
        String cookieValue = responseHeaders.get(“Set-Cookie”);
        String headerFlag = responseHeaders.get(“MyHeaderFlag”);
    }
}

주제 유형을 표시하는 아이콘 참조 주제



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