전송 헤더 특성 우수 사례
웹 서비스 클라이언트가 전송 헤더를 전송하거나 검색할 수 있도록 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 특성을 설정할 수 있습니다.

REQUEST_TRANSPORT_PROPERTIES 우수 사례
- 헤더 값 내에 임베디드된 각 name=value 쌍은 세미콜론(;)으로 구분되어야 합니다.
- 각 이름 및 해당 값은 등호(=) 기호로 구분되어야 합니다.
name1=value1;name2=value2;name3=value3
- 출력 요청 헤더가 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를 통해 설정된 값은 다른 방법으로 설정된 값을 대체합니다.
헤더 | 요청 전송 | 응답 검색 |
---|---|---|
Transfer-encoding |
|
특별한 처리는 없습니다. |
Connection |
|
특별한 처리는 없습니다. |
Expect |
|
특별한 처리는 없습니다. |
호스트 | 무시됨 | 특별한 처리는 없습니다. |
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”);
}
}