17장. JAX-WS 엔드포인트 구성
초록
JAX-WS 엔드포인트는 3개의 Spring 구성 요소 중 하나를 사용하여 구성됩니다. 올바른 요소는 구성할 끝점 유형 및 사용하려는 기능에 따라 달라집니다. 소비자의 경우 jaxws:client
요소를 사용합니다. 서비스 공급자의 경우 jaxws:endpoint
요소 또는 jaxws:server
요소를 사용할 수 있습니다.
끝점을 정의하는 데 사용되는 정보는 일반적으로 끝점의 계약에 정의되어 있습니다. 구성 요소의 를 사용하여 계약의 정보를 재정의할 수 있습니다. 구성 요소를 사용하여 계약에 제공되지 않는 정보를 제공할 수도 있습니다.
구성 요소를 사용하여 WS-RM과 같은 고급 기능을 활성화해야 합니다. 이 작업은 하위 요소를 엔드포인트의 구성 요소에 제공하여 수행됩니다. Java 우선 접근 방식을 사용하여 끝점을 사용하여 개발된 경우 끝점 계약 역할을 하는 SEI에 사용할 바인딩 및 전송 유형에 대한 정보가 부족할 수 있습니다.
17.1. 서비스 공급자 구성
17.1.1. 서비스 공급자 구성을 위한 요소
Apache CXF에는 서비스 공급자를 구성하는 데 사용할 수 있는 두 가지 요소가 있습니다.
두 요소 간의 차이점은 대부분 런타임 내부에 있습니다. jaxws:endpoint
요소는 서비스 끝점을 지원하기 위해 생성된 org.apache.cxf.jaxws.EndpointImpl
오브젝트에 속성을 주입합니다. jaxws:server
요소는 끝점을 지원하기 위해 생성된 org.apache.cxf.jaxws.support.JaxWsServerFactoryBean
오브젝트에 속성을 삽입합니다. EndpointImpl
오브젝트는 구성 데이터를 JaxWsServerFactoryBean
오브젝트에 전달합니다. JaxWsServerFactoryBean
오브젝트는 실제 서비스 오브젝트를 생성하는 데 사용됩니다. 두 구성 요소는 서비스 끝점을 구성하기 때문에 원하는 구문에 따라 선택할 수 있습니다.
17.1.2. jaxws:endpoint Element 사용
17.1.2.1. 개요
jaxws:endpoint
요소는 JAX-WS 서비스 공급자를 구성하기 위한 기본 요소입니다. 특성 및 자식은 서비스 공급자를 인스턴스화하는 데 필요한 모든 정보를 지정합니다. 많은 속성은 서비스 계약의 정보에 매핑됩니다. 하위 항목은 인터셉터 및 기타 고급 기능을 구성하는 데 사용됩니다.
17.1.2.2. 구성되는 끝점 식별
런타임에서 적절한 서비스 공급자에 구성을 적용하려면 해당 구성을 식별할 수 있어야 합니다. 서비스 공급자를 식별하는 기본 방법은 끝점을 구현하는 클래스를 지정하는 것입니다. 이 작업은 jaxws:endpoint
요소의 구현자를
사용하여 수행됩니다.
서로 다른 엔드포인트가 공통 구현을 공유하는 인스턴스의 경우 각 엔드포인트에 대해 서로 다른 구성을 제공할 수 있습니다. 구성에서 특정 끝점을 구분하는 방법은 다음 두 가지입니다.
serviceName
속성 및endpointName
속성의 조합serviceName
속성은 서비스의 엔드포인트를 정의하는wsdl:service
요소를 지정합니다.endpointName
속성은 서비스의 엔드포인트를 정의하는 특정wsdl:port
요소를 지정합니다. 두 속성 모두ns:name
형식을 사용하여 QNames로 지정됩니다. NS 는 요소의 네임스페이스이고 name 은 요소의name
특성 값입니다.참고wsdl:service
요소에 하나의wsdl:port
요소만 있는 경우endpointName
속성을 생략할 수 있습니다.name
속성name
속성은 서비스의 엔드포인트를 정의하는 특정wsdl:port
요소의 QName을 지정합니다. QName은{ns}localPart
형식으로 제공됩니다. NS 는wsdl:port
요소의 네임스페이스이고 localPart 는wsdl:port
요소의name
속성 값입니다.
17.1.2.3. 속성
jaxws:endpoint
요소의 속성은 끝점의 기본 속성을 구성합니다. 이러한 속성에는 끝점 주소, 엔드포인트를 구현하는 클래스 및 엔드포인트를 호스팅하는 버스
가 포함됩니다.
표 17.1. “jaxws:endpoint Element를 사용하여 JAX-WS 서비스 공급자 구성 특성” jaxws:endpoint
요소의 속성을 설명합니다.
속성 | 설명 |
---|---|
다른 구성 요소에서 끝점을 참조하는 데 사용할 수 있는 고유 식별자를 지정합니다.Specifies a unique identifier that other configuration elements can use to refer to the endpoint. | |
서비스를 구현하는 클래스를 지정합니다. 구현 클래스를 구성하는 Spring 빈에 대한 클래스 이름 또는 ID 참조를 사용하여 구현 클래스를 지정할 수 있습니다. 이 클래스는 classpath에 있어야 합니다. | |
서비스를 구현하는 클래스를 지정합니다. 이 속성은 | |
HTTP 끝점의 주소를 지정합니다. 이 값은 서비스 계약에 지정된 값을 재정의합니다. | |
끝점의 WSDL 계약의 위치를 지정합니다. WSDL 계약의 위치는 서비스가 배포되는 폴더를 기준으로 합니다. | |
서비스의 | |
서비스의 | |
서비스가 자동으로 게시되어야 하는지 여부를 지정합니다. 이 값이 | |
서비스 엔드포인트를 관리하는 데 사용되는 버스를 구성하는 Spring 빈의 ID를 지정합니다. 이 기능은 공통 기능 세트를 사용하도록 여러 끝점을 구성할 때 유용합니다. | |
서비스에서 사용하는 메시지 바인딩의 ID를 지정합니다. 유효한 바인딩 ID 목록은 23장. Apache CXF 바인딩 ID 에서 제공됩니다. | |
서비스의 | |
빈이 추상 빈인지 여부를 지정합니다. 추상화 빈은 구체적인 빈 정의를 위해 부모 역할을 하며 인스턴스화되지 않습니다. 기본값은 | |
끝점이 인스턴스화되기 전에 종속되는 빈 목록을 지정합니다. | |
기본값은
이 값을
| |
생성된 WSDL의 |
표 17.1. “jaxws:endpoint Element를 사용하여 JAX-WS 서비스 공급자 구성 특성” 에 나열된 속성 외에도 여러 xmlns:shortName속성을 사용하여
속성에 사용되는 네임스페이스를 선언해야 할 수 있습니다.
endpointName
및 serviceName
17.1.2.4. 예제
예 17.1. “Simple JAX-WS Endpoint 구성” 엔드포인트가 게시되는 주소를 지정하는 JAX-WS 끝점의 구성을 보여줍니다. 이 예제에서는 다른 모든 값에 기본값을 사용하거나 구현에서 주석에 값을 지정했다고 가정합니다.
예 17.1. Simple JAX-WS Endpoint 구성
<beans ... xmlns:jaxws="http://cxf.apache.org/jaxws" ... schemaLocation="... http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd ..."> <jaxws:endpoint id="example" implementor="org.apache.cxf.example.DemoImpl" address="http://localhost:8080/demo" /> </beans>
예 17.2. “서비스 이름을 사용한 JAX-WS Endpoint 구성” 계약에 두 개의 서비스 정의가 포함된 JAX-WS 엔드포인트의 구성을 보여줍니다. 이 경우 serviceName
특성을 사용하여 인스턴스화할 서비스 정의를 지정해야 합니다.
예 17.2. 서비스 이름을 사용한 JAX-WS Endpoint 구성
<beans ... xmlns:jaxws="http://cxf.apache.org/jaxws" ... schemaLocation="... http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd ..."> <jaxws:endpoint id="example2" implementor="org.apache.cxf.example.DemoImpl" serviceName="samp:demoService2" xmlns:samp="http://org.apache.cxf/wsdl/example" /> </beans>
xmlns:samp
속성은 WSDL 서비스
요소가 정의된 네임스페이스를 지정합니다.
17.1.3. jaxws:server 요소 사용
17.1.3.1. 개요
jaxws:server
요소는 JAX-WS 서비스 공급자를 구성하기 위한 요소입니다. 구성 정보를 org.apache.cxf.jaxws.support.JaxWsServerFactoryBean
에 삽입합니다. Apache CXF 특정 오브젝트입니다. 서비스를 구축하기 위해 순수 Spring 접근법을 사용하는 경우 Apache CXF 특정 API를 사용하여 서비스와 상호 작용할 필요가 없습니다.
jaxws:server
요소의 속성과 하위 요소는 서비스 공급자를 인스턴스화하는 데 필요한 모든 정보를 지정합니다. 속성은 엔드포인트를 인스턴스화하는 데 필요한 정보를 지정합니다. 하위 항목은 인터셉터 및 기타 고급 기능을 구성하는 데 사용됩니다.
17.1.3.2. 구성되는 끝점 식별
런타임에서 적절한 서비스 공급자에 구성을 적용하려면 해당 구성을 식별할 수 있어야 합니다. 서비스 공급자를 식별하는 기본 방법은 끝점을 구현하는 클래스를 지정하는 것입니다. 이 작업은 jaxws:server
요소의 serviceBean
속성을 사용하여 수행됩니다.
서로 다른 엔드포인트가 공통 구현을 공유하는 인스턴스의 경우 각 엔드포인트에 대해 서로 다른 구성을 제공할 수 있습니다. 구성에서 특정 끝점을 구분하는 방법은 다음 두 가지입니다.
serviceName
속성 및endpointName
속성의 조합serviceName
속성은 서비스의 엔드포인트를 정의하는wsdl:service
요소를 지정합니다.endpointName
속성은 서비스의 엔드포인트를 정의하는 특정wsdl:port
요소를 지정합니다. 두 속성 모두ns:name
형식을 사용하여 QNames로 지정됩니다. NS 는 요소의 네임스페이스이고 name 은 요소의name
특성 값입니다.참고wsdl:service
요소에 하나의wsdl:port
요소만 있는 경우endpointName
속성을 생략할 수 있습니다.name
속성name
속성은 서비스의 엔드포인트를 정의하는 특정wsdl:port
요소의 QName을 지정합니다. QName은{ns}localPart
형식으로 제공됩니다. NS 는wsdl:port
요소의 네임스페이스이고 localPart 는wsdl:port
요소의name
속성 값입니다.
17.1.3.3. 속성
jaxws:server
요소의 속성은 끝점의 기본 속성을 구성합니다. 이러한 속성에는 끝점 주소, 엔드포인트를 구현하는 클래스 및 엔드포인트를 호스팅하는 버스
가 포함됩니다.
표 17.2. “jaxws:server Element를 사용하여 JAX-WS 서비스 공급자 구성 특성” jaxws:server
요소의 속성을 설명합니다.
속성 | 설명 |
---|---|
다른 구성 요소에서 끝점을 참조하는 데 사용할 수 있는 고유 식별자를 지정합니다.Specifies a unique identifier that other configuration elements can use to refer to the endpoint. | |
서비스를 구현하는 클래스를 지정합니다. 구현 클래스를 구성하는 Spring 빈에 대한 클래스 이름 또는 ID 참조를 사용하여 구현 클래스를 지정할 수 있습니다. 이 클래스는 classpath에 있어야 합니다. | |
서비스를 구현하는 클래스를 지정합니다. 이 속성은 | |
HTTP 끝점의 주소를 지정합니다. 이 값은 서비스 계약에 지정된 값을 재정의합니다. | |
끝점의 WSDL 계약의 위치를 지정합니다. WSDL 계약의 위치는 서비스가 배포되는 폴더를 기준으로 합니다. | |
서비스의 | |
서비스의 | |
서비스가 자동으로 게시되어야 하는지 여부를 지정합니다. 이 값이 | |
서비스 엔드포인트를 관리하는 데 사용되는 버스를 구성하는 Spring 빈의 ID를 지정합니다. 이 기능은 공통 기능 세트를 사용하도록 여러 끝점을 구성할 때 유용합니다. | |
서비스에서 사용하는 메시지 바인딩의 ID를 지정합니다. 유효한 바인딩 ID 목록은 23장. Apache CXF 바인딩 ID 에서 제공됩니다. | |
서비스의 | |
빈이 추상 빈인지 여부를 지정합니다. 추상화 빈은 구체적인 빈 정의를 위해 부모 역할을 하며 인스턴스화되지 않습니다. 기본값은 | |
끝점을 인스턴스화하기 전에 끝점이 인스턴스화되는 데 의존하는 빈 목록을 지정합니다. | |
기본값은
이 값을
|
표 17.2. “jaxws:server Element를 사용하여 JAX-WS 서비스 공급자 구성 특성” 에 나열된 속성 외에도 여러 xmlns:shortName속성을 사용하여
속성에 사용되는 네임스페이스를 선언해야 할 수 있습니다.
endpointName
및 serviceName
17.1.3.4. 예제
예 17.3. “simple JAX-WS Server 구성” 엔드포인트가 게시되는 주소를 지정하는 JAX-WS 끝점의 구성을 보여줍니다.
예 17.3. simple JAX-WS Server 구성
<beans ... xmlns:jaxws="http://cxf.apache.org/jaxws" ... schemaLocation="... http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd ..."> <jaxws:server id="exampleServer" serviceBean="org.apache.cxf.example.DemoImpl" address="http://localhost:8080/demo" /> </beans>
17.1.4. 서비스 공급자에 기능 추가
17.1.4.1. 개요
jaxws:endpoint
및 jaxws:server
요소는 서비스 공급자를 인스턴스화하는 데 필요한 기본 구성 정보를 제공합니다. 서비스 공급자에 기능을 추가하거나 고급 구성을 수행하려면 구성에 하위 요소를 추가해야 합니다.
자식 요소를 사용하면 다음을 수행할 수 있습니다.
17.1.4.2. 요소
표 17.3. “JAX-WS 서비스 공급자 구성에 사용되는 요소” jaxws:endpoint
에서 지원하는 하위 요소에 대해 설명합니다.
요소 | 설명 |
---|---|
메시지 처리를 위한 JAX-WS Handler 구현 목록을 지정합니다. JAX-WS Handler 구현에 대한 자세한 내용은 43장. 핸들러 작성 을 참조하십시오. | |
인바운드 요청을 처리하는 인터셉터 목록을 지정합니다. 자세한 내용은 VII 부. Apache CXF 인터셉터 개발 에서 참조하십시오. | |
인바운드 오류 메시지를 처리하는 인터셉터 목록을 지정합니다. 자세한 내용은 VII 부. Apache CXF 인터셉터 개발 에서 참조하십시오. | |
아웃바운드 응답을 처리하는 인터셉터 목록을 지정합니다. 자세한 내용은 VII 부. Apache CXF 인터셉터 개발 에서 참조하십시오. | |
아웃바운드 오류 메시지를 처리하는 인터셉터 목록을 지정합니다. 자세한 내용은 VII 부. Apache CXF 인터셉터 개발 에서 참조하십시오. | |
끝점에서 사용하는 메시지 바인딩을 구성하는 빈을 지정합니다. 메시지 바인딩은 | |
| 끝점에서 사용하는 데이터 바인딩을 구현하는 클래스를 지정합니다.Specifies the class implementing the data binding used by the endpoint. 이는 포함된 빈 정의를 사용하여 지정합니다. |
서비스에 사용되는 Java executor를 지정합니다. 이는 포함된 빈 정의를 사용하여 지정합니다. | |
Apache CXF의 고급 기능을 구성하는 빈 목록을 지정합니다. 빈 참조 목록 또는 포함된 빈 목록을 제공할 수 있습니다. | |
서비스에서 사용하는 org.apache.cxf.service. invoker 인터페이스의 구현을 지정합니다. [c] | |
끝점에 전달되는 속성의 Spring 맵을 지정합니다. 이러한 속성은 MTOM 지원 활성화와 같은 기능을 제어하는 데 사용할 수 있습니다. | |
서비스를 인스턴스화하는 데 사용되는 | |
[a]
SOAP 바인딩은 soap:soapBinding 빈을 사용하여 구성됩니다.
[c]
invoker 구현은 서비스가 호출되는 방법을 제어합니다. 예를 들어 서비스 구현의 새 인스턴스에서 각 요청을 처리했는지 또는 상태가 호출 간에 보존되는지 여부를 제어합니다.
|
17.1.5. JAX-WS 끝점에서 스키마 유효성 검사 활성화
17.1.5.1. 개요
schema-validation-enabled
속성을 설정하여 jaxws:endpoint
요소 또는 jaxws:server
요소에서 스키마 유효성 검사를 활성화할 수 있습니다. 스키마 유효성 검사가 활성화되면 클라이언트와 서버 간에 전송된 메시지가 스키마 준수 여부를 확인합니다. 기본적으로 스키마 유효성 검사는 성능에 큰 영향을 미치기 때문에 해제됩니다.By default, schema validation is turned off, because it has a significant impact on performance.
17.1.5.2. 예제
JAX-WS 끝점에서 스키마 유효성 검사를 활성화하려면 jaxws:endpoint
요소 또는 jaxws:server
요소의 jaxws:properties
하위 요소에서 schema-validation-enabled
속성을 설정합니다. 예를 들어 jaxws:endpoint
요소에 스키마 검증을 활성화하려면 다음을 수행합니다.
<jaxws:endpoint name="{http://apache.org/hello_world_soap_http}SoapPort" wsdlLocation="wsdl/hello_world.wsdl" createdFromAPI="true"> <jaxws:properties> <entry key="schema-validation-enabled" value="BOTH" /> </jaxws:properties> </jaxws:endpoint>
schema-validation-enabled
속성의 허용되는 값 목록은 24.3.4.7절. “스키마 유효성 검사 유형 값” 을 참조하십시오.