12.2. 소비자 구성

12.2.1. HTTP Consumer Endpoints 관련 메커니즘

HTTP 소비자 끝점은 끝점에서 자동으로 리디렉션 응답을 수락하는지 여부, 청크를 사용할 수 있는지 여부, 엔드포인트에서 keep-alive를 요청할지 여부 및 엔드포인트가 프록시와 상호 작용하는 방식을 포함하여 여러 HTTP 연결 속성을 지정할 수 있습니다. HTTP 연결 속성 외에도 HTTP 소비자 끝점은 보안 방법을 지정할 수 있습니다.

소비자 끝점은 다음 두 가지 메커니즘을 사용하여 구성할 수 있습니다.

12.2.2. 구성 사용

12.2.2.1. 네임스페이스

HTTP 소비자 끝점을 구성하는 데 사용되는 요소는 네임스페이스 http://cxf.apache.org/transports/http/configuration 에 정의되어 있습니다. 일반적으로 접두사 http-conf 를 사용합니다. HTTP 구성 요소를 사용하려면 예 12.4. “HTTP Consumer 구성 네임스페이스” 에 표시된 줄을 끝점 구성 파일의 빈 요소에 추가해야 합니다. 또한 구성 요소의 네임스페이스를 xsi:schemaLocation 속성에 추가해야 합니다.

예 12.4. HTTP Consumer 구성 네임스페이스

<beans ...
       xmlns:http-conf="http://cxf.apache.org/transports/http/configuration"
       ...
       xsi:schemaLocation="...
                           http://cxf.apache.org/transports/http/configuration
                              http://cxf.apache.org/schemas/configuration/http-conf.xsd
                          ...">

12.2.2.2. Undertow 런타임 또는 Netty 런타임

http-conf 네임스페이스의 요소를 사용하여 Undertow 런타임 또는 Netty 런타임을 구성할 수 있습니다.

12.2.2.3. 구성 요소

http-conf:conduit 요소와 해당 하위 항목을 사용하여 HTTP 소비자 끝점을 구성합니다. http-conf:conduit 요소는 엔드포인트에 해당하는 WSDL 포트 요소를 지정하는 단일 속성인 name 을 사용합니다. name 속성의 값은 portQName'.http-conduit' 형식을 사용합니다. 예 12.5. “HTTP-conf:conduit Element” 는 끝점의 대상 네임스페이스가 http://widgets.widgetvendor.net인 경우의 WSDL 조각 < port binding="widgetSOAPBinding" name="widgetSOAPPort >에 의해 지정된 엔드포인트에 대한 구성을 추가하는 데 사용되는 http-conf:conduit 요소를 표시합니다.

예 12.5. HTTP-conf:conduit Element

...
  <http-conf:conduit name="{http://widgets/widgetvendor.net}widgetSOAPPort.http-conduit">
    ...
  </http-conf:conduit>
...

http-conf:conduit 요소에는 구성 정보를 지정하는 하위 요소가 있습니다. 자세한 내용은 표 12.1. “HTTP Consumer Endpoint를 구성하는 데 사용되는 요소” 에 설명되어 있습니다.

표 12.1. HTTP Consumer Endpoint를 구성하는 데 사용되는 요소

요소설명

http-conf:client

시간 초과, 유지 요청, 콘텐츠 유형 등과 같은 HTTP 연결 속성을 지정합니다.Specifies the HTTP connection properties such as timeouts, keep-alive requests, content types, etc. “클라이언트 요소” 을 참조하십시오.

http-conf:authorization

끝점에서 선점하여 사용하는 기본 인증 방법을 구성하기 위한 매개변수를 지정합니다. 가장 선호되는 방법은 http-conf:basicAuthSupplier 오브젝트를 제공하는 것입니다.

http-conf:proxyAuthorization

발신 HTTP 프록시 서버에 대한 기본 인증을 구성하는 매개변수를 지정합니다.

http-conf:tlsClientParameters

SSL/TLS를 구성하는 데 사용되는 매개변수를 지정합니다.

http-conf:basicAuthSupplier

끝점에서 사용하는 기본 인증 정보를 제공하는 오브젝트의 빈 참조 또는 클래스 이름을 선점적으로 또는 401 HTTP 챌린지에 대한 응답으로 지정합니다.

http-conf:trustDecider

정보를 전송하기 전에 HTTP(S) URLConnection 오브젝트를 검사하여 HTTPS 서비스 공급자와의 연결을 설정하는 오브젝트의 빈 참조 또는 클래스 이름을 지정합니다.

12.2.2.4. 클라이언트 요소

http-conf:client 요소는 소비자 엔드포인트의 HTTP 연결의 비보안 속성을 구성하는 데 사용됩니다. 표 12.2. “HTTP 소비자 구성 속성” 에 설명된 해당 속성은 연결의 속성을 지정합니다.

표 12.2. HTTP 소비자 구성 속성

속성설명

ConnectionTimeout

시간이 초과되기 전에 소비자가 연결을 설정하려고 시도하는 시간(밀리초)을 지정합니다. 기본값은 30000 입니다.

0 은 소비자가 요청을 무기한 계속 보내도록 지정합니다.

ReceiveTimeout

시간이 초과되기 전에 소비자가 응답을 대기할 시간(밀리초)을 지정합니다. 기본값은 30000 입니다.

0 은 소비자가 무기한 기다리도록 지정합니다.

AutoRedirect

소비자가 발급한 서버를 자동으로 따르는지 여부를 지정합니다. 기본값은 false입니다.

MaxRetransmits

소비자가 리디렉션을 충족하기 위해 요청을 다시 전송할 최대 횟수를 지정합니다. 기본값은 -1 이며 무제한 재전송이 허용되도록 지정합니다.

AllowChunking

사용자가 청크를 사용하여 요청을 보낼지 여부를 지정합니다. 기본값은 사용자가 요청을 보낼 때 청크를 사용하도록 지정하는 true 입니다.

다음 중 하나라도 해당하는 경우 청크를 사용할 수 없습니다.

  • HTTP-conf:basicAuthSupplier 는 인증 정보를 사전에 제공하도록 구성되어 있습니다.
  • AutoRedirecttrue 로 설정됩니다.

두 경우 모두 AllowChunking 값이 무시되고 청크는 허용되지 않습니다.

accept

소비자가 처리할 준비가 된 미디어 유형을 지정합니다. 이 값은 HTTP Accept 속성의 값으로 사용됩니다. 특성 값은MIME(Multipurpose Internet mail extensions) 유형을 사용하여 지정됩니다.

AcceptLanguage

소비자가 응답을 받기 위해 선호하는 언어(예: 미국 영어)를 지정합니다. 이 값은 HTTP AcceptLanguage 속성 값으로 사용됩니다.

언어 태그는 International Organization for Standards(ISO)에 의해 규제되며 일반적으로 ISO-639 표준에 따라 결정된 언어 코드와 하이픈으로 구분된 ISO-3166 표준에 따라 국가 코드를 결합하여 구성됩니다. 예를 들어 en-US는 미국어를 나타냅니다.

AcceptEncoding

소비자가 처리할 준비가 된 콘텐츠 인코딩을 지정합니다. 콘텐츠 인코딩 레이블은 IANA(Internet Assigned Numbers Authority)에 의해 규제됩니다. 이 값은 HTTP AcceptEncoding 속성 값으로 사용됩니다.

ContentType

메시지의 본문에 전송되는 데이터의 미디어 유형을 지정합니다.Specifies the media type of the data being sent in the body of a message. 미디어 유형은 다목적 인터넷 메일 확장 (MIME) 유형을 사용하여 지정됩니다. 값은 HTTP ContentType 속성 값으로 사용됩니다. 기본값은 text/xml 입니다.

웹 서비스의 경우 이 값을 text/xml 로 설정해야 합니다. 클라이언트가 CGI 스크립트로 HTML 양식 데이터를 전송하는 경우 이를 application/x-www-form-urlencoded 로 설정해야 합니다. HTTP POST 요청이 SOAP와 반대되는 고정 페이로드 형식에 바인딩된 경우 일반적으로 콘텐츠 유형이 애플리케이션/octet-stream 으로 설정됩니다.

호스트

요청이 호출되는 리소스의 인터넷 호스트 및 포트 번호를 지정합니다. 이 값은 HTTP Host 속성 값으로 사용됩니다.

이 속성은 일반적으로 필요하지 않습니다. 이는 특정 DNS 시나리오 또는 애플리케이션 설계에만 필요합니다. 예를 들어, 동일한 인터넷 프로토콜(IP) 주소에 매핑되는 가상 서버의 경우 클라이언트가 클러스터를 선호하는 호스트를 나타냅니다.

연결

각 요청/응답 대화 상자 이후 특정 연결을 열린 상태로 유지할지 여부를 지정합니다.Specifies whether a particular connection is to be kept open or closed after each request/response dialog. 두 가지 유효한 값이 있습니다.

  • keep-Alive - 소비자가 초기 요청/응답 시퀀스 후 연결을 열린 상태로 설정하도록 지정합니다. 서버가 이를 수락하면 소비자가 이를 닫을 때까지 연결이 열려 있습니다.
  • 닫기(기본값) - 요청/응답 시퀀스 후에 서버에 대한 연결이 종료되도록 지정합니다.

CacheControl

소비자의 서비스 공급자 요청을 포함하는 체인과 관련된 캐시에 의해 준수해야 하는 동작에 대한 지시문을 지정합니다.Specifies directives about the behavior that must be adhered to by caches involved in the chain consisting a request from a consumer to a service provider. 12.2.4절. “소비자 캐시 제어 지침” 을 참조하십시오.

쿠키

모든 요청과 함께 보낼 정적 쿠키를 지정합니다.

BrowserType

요청이 시작되는 브라우저에 대한 정보를 지정합니다. 월드 와이드 웹 컨소시엄 (W3C)의 HTTP 사양에서 이것을 user-agent 라고도 합니다. 일부 서버는 요청을 전송하는 클라이언트에 따라 최적화됩니다.

Referer

소비자가 특정 서비스에 대한 요청을 수행하도록 지시하는 리소스의 URL을 지정합니다. 값은 HTTP Referer 속성의 값으로 사용됩니다.

이 HTTP 속성은 요청이 URL을 입력하는 대신 하이퍼링크를 클릭하는 브라우저 사용자의 결과인 경우에 사용됩니다. 이를 통해 서버는 이전 작업 흐름에 따라 처리를 최적화하고, 로깅, 최적화된 캐싱, 사용되지 않는 링크 추적 등의 목적으로 리소스에 백 링크 목록을 생성할 수 있습니다. 그러나 일반적으로 웹 서비스 애플리케이션에서는 사용되지 않습니다.

AutoRedirect 특성이 true 로 설정되고 요청이 리디렉션되면 Referer 속성에 지정된 모든 값이 재정의됩니다. HTTP Referer 속성의 값은 소비자의 원래 요청을 리디렉션하는 서비스의 URL로 설정됩니다.

DecoupledEndpoint

별도의 공급자를 통해 응답을 받기 위한 분리된 엔드포인트의 URL을 지정합니다.Specifies the URL of a decoupled endpoint for the received of responses over a separate providerconsumer connection. 분리된 엔드포인트 사용에 대한 자세한 내용은 12.6절. “분리된 모드에서 HTTP 전송 사용” 에서 참조하십시오.

분리된 끝점에 대해 WS-Addressing을 사용하도록 소비자 끝점과 서비스 공급자 끝점을 모두 구성해야 합니다.

ProxyServer

라우팅되는 요청을 통과하는 프록시 서버의 URL을 지정합니다.

ProxyServerPort

라우팅되는 요청을 통한 프록시 서버의 포트 번호를 지정합니다.

ProxyServerType

요청을 라우팅하는 데 사용되는 프록시 서버의 유형을 지정합니다. 유효한 값은 다음과 같습니다.

  • HTTP(기본값)
  • SOCKS

12.2.2.5. 예제

예 12.6. “HTTP Consumer Endpoint 구성” 는 호출당 한 번만 요청을 다시 전송하며 청크 스트림을 사용할 수 없는 요청 간에 공급자에 대한 연결을 열어 두고자 하는 HTTP 소비자 끝점의 구성을 보여줍니다.

예 12.6. HTTP Consumer Endpoint 구성

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:http-conf="http://cxf.apache.org/transports/http/configuration"
       xsi:schemaLocation="http://cxf.apache.org/transports/http/configuration
                             http://cxf.apache.org/schemas/configuration/http-conf.xsd
                           http://www.springframework.org/schema/beans
                             http://www.springframework.org/schema/beans/spring-beans.xsd">

  <http-conf:conduit name="{http://apache.org/hello_world_soap_http}SoapPort.http-conduit">
    <http-conf:client Connection="Keep-Alive"
                      MaxRetransmits="1"
                      AllowChunking="false" />
  </http-conf:conduit>
</beans>

12.2.2.6. 더 알아보기

HTTP 구성에 대한 자세한 내용은 16장. 구성 요소 에서 참조하십시오.

12.2.3. WSDL 사용

12.2.3.1. 네임스페이스

HTTP 소비자 끝점을 구성하는 데 사용되는 WSDL 확장 요소는 네임스페이스 http://cxf.apache.org/transports/http/configuration 에 정의되어 있습니다. 일반적으로 접두사 http-conf 를 사용합니다. HTTP 구성 요소를 사용하려면 예 12.7. “HTTP Consumer WSDL Element's Namespace” 에 표시된 줄을 끝점의 WSDL 문서의 정의 요소에 추가해야 합니다.

예 12.7. HTTP Consumer WSDL Element's Namespace

<definitions ...
       xmlns:http-conf="http://cxf.apache.org/transports/http/configuration"

12.2.3.2. Undertow 런타임 또는 Netty 런타임

http-conf 네임스페이스의 요소를 사용하여 Undertow 런타임 또는 Netty 런타임을 구성할 수 있습니다.

12.2.3.3. 클라이언트 요소

http-conf:client 요소는 WSDL 문서에서 HTTP 소비자의 연결 속성을 지정하는 데 사용됩니다. http-conf:client 요소는 WSDL 포트 요소의 자식입니다. 구성 파일에서 사용되는 클라이언트 요소와 동일한 속성이 있습니다. 속성은 표 12.2. “HTTP 소비자 구성 속성” 에서 확인할 수 있습니다.

12.2.3.4. 예제

예 12.8. “HTTP Consumer Endpoint 구성” 에는 캐시와 상호 작용하지 않도록 지정하는 HTTP 소비자 엔드포인트를 구성하는 WSDL 조각을 보여줍니다.

예 12.8. HTTP Consumer Endpoint 구성

<service ... >
  <port ... >
    <soap:address ... />
    <http-conf:client CacheControl="no-cache" />
  </port>
</service>

12.2.4. 소비자 캐시 제어 지침

표 12.3. “HTTP-conf:client 캐시 제어 지침” HTTP 소비자가 지원하는 캐시 제어 지시문을 나열합니다.

표 12.3. HTTP-conf:client 캐시 제어 지침

directive동작

no-cache

캐시는 먼저 서버와의 응답을 재검증하지 않고 후속 요청을 충족하기 위해 특정 응답을 사용할 수 없습니다. 특정 응답 헤더 필드가 이 값으로 지정된 경우 제한은 응답 내의 해당 헤더 필드에만 적용됩니다. 응답 헤더 필드를 지정하지 않으면 제한이 전체 응답에 적용됩니다.

no-store

캐시는 응답의 일부 또는 이를 호출한 요청의 일부를 저장해야 합니다.

max-age

소비자는 지정된 시간(초)보다 긴 응답을 허용할 수 있습니다.

max-stale

소비자는 만료 시간을 초과한 응답을 수락할 수 있습니다. 값이 max-stale에 할당되면 소비자가 해당 응답을 허용할 수 있는 응답의 만료 시간 이외의 초 수를 나타냅니다. 값이 할당되지 않은 경우 소비자는 모든 연령의 오래된 응답을 수락할 수 있습니다.

min-fresh

소비자는 최소한 지정된 시간(초) 동안 새로운 응답을 원하는 것입니다.

no-transform

캐시는 공급자와 소비자 간 응답으로 콘텐츠의 미디어 유형 또는 위치를 수정하지 않아야 합니다.

only-if-cached

캐시는 현재 캐시에 저장된 응답만 반환하고, 다시 로드하거나 재검토해야 하는 응답이 아닙니다.

cache-extension

다른 캐시 지시문에 대한 추가 확장을 지정합니다. 확장 기능은 정보 또는 동작일 수 있습니다. 확장된 지시문은 표준 지시문의 컨텍스트에 지정되므로 확장 지시문을 이해하지 못하는 애플리케이션이 standard 지시문에서 요구하는 동작을 따를 수 있습니다.