18.2. JAX-RS 클라이언트 엔드 포인트 구성

18.2.1. JAX-RS Client Endpoint 정의

18.2.1.1. 클라이언트 프록시 삽입

XML 언어(Blueprint XML 또는 Spring XML)에서 클라이언트 프록시 빈을 인스턴스화하는 기본 방법은 클라이언트 프록시를 사용하여 REST 서비스를 호출할 수 있는 다른 빈에 삽입하는 것입니다. XML에서 클라이언트 프록시 빈을 생성하려면 jaxrs:client 요소를 사용합니다.

18.2.1.2. 네임스페이스

JAX-RS 클라이언트 끝점은 서버 끝점의 다른 XML 네임스페이스를 사용하여 정의합니다. 다음 표에서는 어떤 XML 언어에 사용할 네임스페이스를 보여줍니다.

XML 언어클라이언트 끝점의 네임스페이스

Blueprint

http://cxf.apache.org/blueprint/jaxrs-client

Spring

http://cxf.apache.org/jaxrs-client

18.2.1.3. 기본 클라이언트 끝점 정의

다음 예제에서는 Blueprint XML 또는 Spring XML에서 클라이언트 프록시 빈을 생성하는 방법을 보여줍니다.

<jaxrs:client id="restClient"
       address="http://localhost:8080/test/services/rest"
       serviceClass="org.apache.cxf.systest.jaxrs.BookStoreJaxrsJaxws"/>

기본 클라이언트 끝점을 정의하려면 다음 속성을 설정해야 하는 위치입니다.

id
클라이언트 프록시의 빈 ID를 사용하여 XML 구성의 다른 빈에 클라이언트 프록시를 삽입할 수 있습니다.
주소
address 속성은 REST 호출의 기본 URL을 지정합니다.
serviceClass
serviceClass 속성은 루트 리소스 클래스를 지정하여 REST 서비스에 대한 설명을 제공합니다( @Path에서 주석 처리됨). 실제로 이 클래스는 서버 클래스이지만 클라이언트에서 직접 사용하지는 않습니다. 지정된 클래스는 클라이언트 프록시를 동적으로 구성하는 데 사용되는 해당 메타데이터(Java 리플렉션 및 JAX-RS 주석을 통해)에만 사용됩니다.

18.2.1.4. 헤더 지정

다음과 같이 jaxrs:headers 하위 요소를 사용하여 클라이언트 프록시의 호출에 HTTP 헤더를 추가할 수 있습니다.

<jaxrs:client id="restClient"
       address="http://localhost:8080/test/services/rest"
       serviceClass="org.apache.cxf.systest.jaxrs.BookStoreJaxrsJaxws"
       inheritHeaders="true">
       <jaxrs:headers>
           <entry key="Accept" value="text/xml"/>
       </jaxrs:headers>
</jaxrs:client>

18.2.2. jaxrs:client 속성

18.2.2.1. 속성

표 18.3. “JAX-RS 클라이언트 끝점 속성” jaxrs:client 요소에서 사용 가능한 특성을 설명합니다.

표 18.3. JAX-RS 클라이언트 끝점 속성

속성설명

주소

소비자가 요청할 끝점의 HTTP 주소를 지정합니다. 이 값은 계약에 설정된 값을 재정의합니다.

bindingId

소비자가 사용하는 메시지 바인딩의 ID를 지정합니다. 유효한 바인딩 ID 목록은 23장. Apache CXF 바인딩 ID 에서 제공됩니다.

bus

엔드포인트를 관리하는 버스를 구성하는 Spring 빈의 ID를 지정합니다.

inheritHeaders

이 프록시에서 하위 리소스 프록시가 생성되는 경우 이 프록시에 설정된 헤더가 상속되는지 여부를 지정합니다. 기본값은 false 입니다.

사용자 이름

간단한 사용자 이름/암호 인증에 사용되는 사용자 이름을 지정합니다.

암호

간단한 사용자 이름/암호 인증에 사용되는 암호를 지정합니다.

modelRef

모델 스키마를 classpath 리소스로 지정합니다(예: classpath:/path/to/model.xml). JAX-RS 모델 스키마를 정의하는 방법에 대한 자세한 내용은 18.3절. “모델 스키마를 사용하여 REST 서비스 정의” 을 참조하십시오.

serviceClass

서비스 인터페이스 또는 리소스 클래스( @PATH로 주석이 추가됨)의 이름을 지정하고 JAX-RS 서버 구현에서 다시 사용합니다. 이 경우 지정된 클래스가 직접 호출 되지 않습니다 (실제 서버 클래스). 지정된 클래스는 클라이언트 프록시를 동적으로 구성하는 데 사용되는 해당 메타데이터(Java 리플렉션 및 JAX-RS 주석을 통해)에만 사용됩니다.

serviceName

JMS 전송이 사용되는 특수한 경우 JAX-RS 엔드포인트에 대한 서비스 QName( ns:이름형식 사용)을 지정합니다. 자세한 내용은 “JMS 전송 사용”의 내용을 참조하십시오.

threadSafe

클라이언트 프록시가 스레드로부터 안전한지 여부를 지정합니다.Specifies whether the client proxy is thread-safe. 기본값은 false 입니다.

transportId

비표준 전송 계층(HTTP 대신)을 선택하기 위한 것입니다. 특히 이 속성을 http://cxf.apache.org/transports/jms 로 설정하여 JMS 전송을 선택할 수 있습니다. 자세한 내용은 “JMS 전송 사용”의 내용을 참조하십시오.

abstract

(spring only) 빈이 추상 빈인지 여부를 지정합니다. 추상화 빈은 구체적인 빈 정의를 위해 부모 역할을 하며 인스턴스화되지 않습니다. 기본값은 false입니다. 이 값을 true 로 설정하면 빈 공장이 빈을 인스턴스화하지 않도록 지시합니다.

depends-on

(spring only) 끝점이 인스턴스화되기 전에 의존하는 빈 목록을 지정합니다.

18.2.3. jaxrs: 클라이언트 하위 요소

18.2.3.1. 하위 요소

표 18.4. “JAX-RS 클라이언트 끝점 하위 요소” jaxrs:client 요소의 하위 요소에 대해 설명합니다.

표 18.4. JAX-RS 클라이언트 끝점 하위 요소

요소설명

jaxrs:executor

 

jaxrs:features

Apache CXF의 고급 기능을 구성하는 빈 목록을 지정합니다. 빈 참조 목록 또는 포함된 빈 목록을 제공할 수 있습니다.

jaxrs:binding

사용되지 않음.

jaxrs:dataBinding

끝점에서 사용하는 데이터 바인딩을 구현하는 클래스를 지정합니다.Specifies the class implementing the data binding used by the endpoint. 이는 포함된 빈 정의를 사용하여 지정합니다. 자세한 내용은 “데이터 바인딩 지정” 에서 참조하십시오.

jaxrs:inInterceptors

인바운드 응답을 처리하는 인터셉터 목록을 지정합니다. 자세한 내용은 VII 부. Apache CXF 인터셉터 개발 에서 참조하십시오.

jaxrs:inFaultInterceptors

인바운드 오류 메시지를 처리하는 인터셉터 목록을 지정합니다. 자세한 내용은 VII 부. Apache CXF 인터셉터 개발 에서 참조하십시오.

jaxrs:outInterceptors

아웃바운드 요청을 처리하는 인터셉터 목록을 지정합니다. 자세한 내용은 VII 부. Apache CXF 인터셉터 개발 에서 참조하십시오.

jaxrs:outFaultInterceptors

아웃바운드 오류 메시지를 처리하는 인터셉터 목록을 지정합니다. 자세한 내용은 VII 부. Apache CXF 인터셉터 개발 에서 참조하십시오.

jaxrs:properties

끝점으로 전달되는 속성의 맵을 지정합니다.

jaxrs:providers

이 끝점에 하나 이상의 사용자 지정 JAX-RS 공급자를 등록할 수 있습니다. 이 요소의 자식은 요소의 인스턴스 또는 (ref 요소) JAX-RS 공급자에 대한 참조입니다.

jaxrs:modelBeans

리소스 모델의 기본 요소( jaxrs:resource 요소에 해당)인 하나 이상의 org.apache.cxf.jaxrs.model.UserResource bean에 대한 참조 목록으로 구성됩니다. 자세한 내용은 18.3절. “모델 스키마를 사용하여 REST 서비스 정의”의 내용을 참조하십시오.

jaxrs:model

이 엔드포인트에서 직접 리소스 모델을 정의합니다(즉, jaxrs:resource 요소가 하나 이상 포함된 jaxrs:model 요소). 자세한 내용은 18.3절. “모델 스키마를 사용하여 REST 서비스 정의”의 내용을 참조하십시오.

jaxrs:headers

발신 메시지에 헤더를 설정하는 데 사용됩니다. 자세한 내용은 “헤더 지정”의 내용을 참조하십시오.

jaxrs:schemaLocations

XML 메시지 콘텐츠 유효성 검사에 사용되는 하나 이상의 XML 스키마를 지정합니다.Specifies one or more XML schemas used for validating XML message content. 이 요소에는 하나 이상의 jaxrs:schemaLocation 요소가 포함될 수 있으며, 각 요소는 XML 스키마 파일의 위치를 지정합니다(일반적으로 classpath URL). 자세한 내용은 “스키마 검증”의 내용을 참조하십시오.