12.3. 서비스 공급자 구성

12.3.1. HTTP 서비스 공급자의 메커니즘

HTTP 서비스 공급자 끝점은 활성 요청을 유지할지 여부, 캐시와 상호 작용하는 방법, 소비자와 통신하는 데 오류의 내결함성을 포함하여 여러 HTTP 연결 특성을 지정할 수 있습니다.

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

12.3.2. 구성 사용

12.3.2.1. 네임스페이스

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

예 12.9. HTTP 공급자 구성 네임스페이스

<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.3.2.2. Undertow 런타임 또는 Netty 런타임

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

12.3.2.3. 대상 요소

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

예 12.10. HTTP-conf:destination Element

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

http-conf:destination 요소에는 구성 정보를 지정하는 여러 하위 요소가 있습니다. 자세한 내용은 표 12.4. “HTTP 서비스 공급자 끝점을 구성하는 데 사용되는 요소” 에 설명되어 있습니다.

표 12.4. HTTP 서비스 공급자 끝점을 구성하는 데 사용되는 요소

요소설명

http-conf:server

HTTP 연결 속성을 지정합니다. “서버 요소” 을 참조하십시오.

http-conf:contextMatchStrategy

HTTP 요청을 처리하기 위한 컨텍스트 일치 전략을 구성하는 매개변수를 지정합니다.

http-conf:fixedParameterOrder

이 대상에서 처리하는 HTTP 요청의 매개변수 순서가 고정되는지 여부를 지정합니다.

12.3.2.4. 서버 요소

http-conf:server 요소는 서비스 공급자 끝점의 HTTP 연결 속성을 구성하는 데 사용됩니다. 표 12.5. “HTTP 서비스 공급자 구성 속성” 에 설명된 해당 속성은 연결의 속성을 지정합니다.

표 12.5. HTTP 서비스 공급자 구성 속성

속성설명

ReceiveTimeout

연결 시간이 초과되기 전에 서비스 공급자가 요청을 수신하려고 하는 시간(밀리초)을 설정합니다. 기본값은 30000 입니다.

0 공급자는 공급자가 시간 초과되지 않도록 지정합니다.

SuppressClientSendErrors

요청 수신 시 오류가 발생할 때 예외가 throw되는지 여부를 지정합니다.Specifies whether exceptions are to be thrown when an error is encountered on receiving a request. 기본값은 false 입니다. 오류 발생 시 예외가 발생합니다.

SuppressClientReceiveErrors

소비자에게 응답을 보내는 데 오류가 발생할 때 예외가 throw되는지 여부를 지정합니다.Specifies whether exceptions are to be thrown when an error is encountered on sending a response to a consumer. 기본값은 false 입니다. 오류 발생 시 예외가 발생합니다.

HonorKeepAlive

응답이 전송된 후에도 서비스 공급자가 연결 요청을 열린 상태로 유지할지 여부를 지정합니다. 기본값은 false 입니다. 유지 요청은 무시됩니다.

RedirectURL

클라이언트 요청에 지정된 URL이 요청된 리소스에 더 이상 적합하지 않은 경우 클라이언트 요청을 리디렉션해야 하는 URL을 지정합니다. 이 경우 서버 응답의 첫 번째 줄에 상태 코드가 자동으로 설정되지 않으면 상태 코드가 302로 설정되고 상태 설명이 Object Moved로 설정됩니다. 값은 HTTP RedirectURL 속성 값으로 사용됩니다.

CacheControl

서비스 공급자의 응답을 소비자로 구성된 체인과 관련된 캐시에 의해 준수해야 하는 동작에 대한 지시문을 지정합니다. 12.3.4절. “서비스 공급자 캐시 제어 지침” 을 참조하십시오.

ContentLocation

응답에 전송되는 리소스가 있는 URL을 설정합니다.

ContentType

응답으로 전송되는 정보의 미디어 유형을 지정합니다. 미디어 유형은 다목적 인터넷 메일 확장 (MIME) 유형을 사용하여 지정됩니다. 값은 HTTP ContentType 위치 값으로 사용됩니다.

ContentEncoding

서비스 공급자가 전송하는 정보에 적용된 추가 콘텐츠 인코딩을 지정합니다. 콘텐츠 인코딩 레이블은 IANA(Internet Assigned Numbers Authority)에 의해 규제됩니다. 가능한 콘텐츠 인코딩 값에는 zip, gzip, compress, deflate, identity가 포함됩니다. 이 값은 HTTP ContentEncoding 속성 값으로 사용됩니다.

콘텐츠 인코딩의 주된 사용은 zip 또는 gzip과 같은 일부 인코딩 메커니즘을 사용하여 문서를 압축하도록 허용하는 것입니다. Apache CXF는 콘텐츠 코딩에 대한 유효성 검사를 수행하지 않습니다. 지정된 콘텐츠 코딩이 애플리케이션 수준에서 지원되도록 해야 합니다.

ServerType

응답을 보내는 서버의 유형을 지정합니다. 값은 program-name/version (예: Apache/1.2.5) 형식을 사용합니다.

12.3.2.5. 예제

예 12.11. “HTTP 서비스 공급자 끝점 구성” keep-alive 요청을 준수하고 모든 통신 오류를 방지하는 HTTP 서비스 공급자 끝점의 구성을 보여줍니다.

예 12.11. HTTP 서비스 공급자 끝점 구성

<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:destination name="{http://apache.org/hello_world_soap_http}SoapPort.http-destination">
    <http-conf:server SuppressClientSendErrors="true"
                      SuppressClientReceiveErrors="true"
                      HonorKeepAlive="true" />
  </http-conf:destination>
</beans>

12.3.3. WSDL 사용

12.3.3.1. 네임스페이스

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

예 12.12. HTTP Provider WSDL Element's Namespace

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

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

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

12.3.3.3. 서버 요소

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

12.3.3.4. 예제

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

예 12.13. HTTP 서비스 공급자 엔드 포인트 구성

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

12.3.4. 서비스 공급자 캐시 제어 지침

표 12.6. “http-conf:server Cache Control Directives” HTTP 서비스 공급자가 지원하는 캐시 제어 지시문을 나열합니다.

표 12.6. http-conf:server Cache Control Directives

directive동작

no-cache

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

public

모든 캐시는 응답을 저장할 수 있습니다.

private

공용(공유) 캐시는 응답이 단일 사용자를 대상으로 하므로 응답을 저장할 수 없습니다. 특정 응답 헤더 필드가 이 값으로 지정된 경우 제한은 응답 내의 해당 헤더 필드에만 적용됩니다. 응답 헤더 필드를 지정하지 않으면 제한이 전체 응답에 적용됩니다.

no-store

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

no-transform

캐시는 서버와 클라이언트 간의 응답으로 콘텐츠의 미디어 유형 또는 위치를 수정하지 않아야 합니다.

must-revalidate

캐시는 응답과 관련된 만료된 항목을 다시 시작해야 후속 응답에 해당 항목을 사용할 수 있습니다.

proxy-revalidate

공유 캐시에만 적용할 수 있고 공유되지 않은 비공개 캐시에서 무시할 수 있다는 점을 제외하고 must-revalidate와 동일합니다. 이 지시문을 사용하는 경우 public cache 지시문도 사용해야 합니다.

max-age

클라이언트는 지정된 시간(초)보다 오래된 응답을 수락할 수 있습니다.

s-max-age

공유 캐시에서만 시행할 수 있으며 개인 비공유 캐시에서 무시된다는 점을 제외하고 max-age와 동일한 작업을 수행합니다. s-max-age에서 지정한 기간은 max-age에서 지정한 기간을 재정의합니다. 이 지시문을 사용하는 경우 proxy-revalidate 지시문도 사용해야 합니다.

cache-extension

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