17장. Cryostat-WS 끝점 구성
초록
Cryostat-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
요소는 Cryostat-WS 서비스 공급자를 구성하는 기본 요소입니다. 해당 속성 및 하위는 서비스 공급자를 인스턴스화하는 데 필요한 모든 정보를 지정합니다. 많은 특성은 서비스 계약의 정보에 매핑됩니다. 하위 항목은 인터셉터 및 기타 고급 기능을 구성하는 데 사용됩니다.
17.1.2.2. 구성 중인 끝점 식별
런타임에서 구성을 적절한 서비스 공급자에 적용하려면 해당 구성을 식별할 수 있어야 합니다. 서비스 공급자를 식별하는 기본 방법은 끝점을 구현하는 클래스를 지정하는 것입니다. 이 작업은 jaxws:endpoint
요소의 implementor
특성을 사용하여 수행됩니다.
다른 끝점이 공통 구현을 공유하는 인스턴스의 경우 각 끝점에 대해 다른 구성을 제공할 수 있습니다. 구성에서 특정 끝점을 구분하는 방법은 다음 두 가지가 있습니다.
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는ws
dl:port 요소의 네임스페이스이며 localPart 는wsdl:port
요소의name
속성 값입니다.
17.1.2.3. 속성
jaxws:endpoint
요소의 속성은 끝점의 기본 속성을 구성합니다. 이러한 속성에는 끝점의 주소, 엔드포인트를 구현하는 클래스 및 엔드포인트를 호스팅하는 버스가
포함됩니다.
표 17.1. “jaxws:endpoint Element를 사용하여 Cryostat-WS 서비스 공급자 구성의 속성” jaxws:endpoint
요소의 속성을 설명합니다.
속성 | 설명 |
---|---|
다른 구성 요소가 끝점을 참조하는 데 사용할 수 있는 고유 식별자를 지정합니다. | |
서비스를 구현하는 클래스를 지정합니다. 클래스 이름 또는 구현 클래스를 구성하는 Spring 빈에 대한 ID 참조를 사용하여 구현 클래스를 지정할 수 있습니다. 이 클래스는 classpath에 있어야 합니다. | |
서비스를 구현하는 클래스를 지정합니다. 이 속성은 | |
HTTP 끝점의 주소를 지정합니다. 이 값은 서비스 계약에 지정된 값을 재정의합니다. | |
끝점의 WSDL 계약 위치를 지정합니다. WSDL 계약의 위치는 서비스가 배포된 폴더를 기준으로 합니다. | |
서비스의 | |
서비스의 | |
서비스를 자동으로 게시해야 하는지 여부를 지정합니다. 이 값이 | |
서비스 엔드포인트를 관리하는 데 사용되는 버스를 구성하는 Spring 8080의 ID를 지정합니다. 이는 공통 기능 세트를 사용하도록 여러 끝점을 구성할 때 유용합니다. | |
서비스에서 사용하는 메시지 바인딩의 ID를 지정합니다. 유효한 바인딩 ID 목록은 23장. Apache CXF 바인딩 ID 에 제공됩니다. | |
서비스의 | |
8080이 추상 8080인지 여부를 지정합니다. 추상 빈은 구체적인 8080 정의에 대해 상위 역할을 하며 인스턴스화되지 않습니다. 기본값은 | |
끝점이 인스턴스화되기 전에 인스턴스화되는 경우 종속되는 빈 목록을 지정합니다. | |
사용자가 Apache CXF API(예:
기본값은
이 값을
| |
생성된 WSDL의 |
표 17.1. “jaxws:endpoint Element를 사용하여 Cryostat-WS 서비스 공급자 구성의 속성” 에 나열된 속성 외에도 여러 xmlns:shortName특성을 사용하여
및 endpointName
serviceName
속성에서 사용하는 네임스페이스를 선언해야 할 수 있습니다.
17.1.2.4. 예
예 17.1. “간단한 Cryostat-WS 끝점 구성” 엔드포인트가 게시되는 주소를 지정하는 a Cryostat-WS 엔드포인트에 대한 구성이 표시됩니다. 이 예제에서는 다른 모든 값에 기본값을 사용하거나 구현에 주석에 지정된 값이 있다고 가정합니다.
예 17.1. 간단한 Cryostat-WS 끝점 구성
<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. “서비스 이름을 사용한 Cryostat-WS 끝점 구성” 계약에는 두 개의 서비스 정의가 포함된 엔드포인트 구성이 표시됩니다. 이 경우 serviceName
특성을 사용하여 인스턴스화할 서비스 정의를 지정해야 합니다.
예 17.2. 서비스 이름을 사용한 Cryostat-WS 끝점 구성
<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 service
요소가 정의된 네임스페이스를 지정합니다.
예 17.3. “HTTP/2가 활성화된 Cryostat-WS 끝점 구성” HTTP/2가 활성화된 주소를 지정하는 another-WS 끝점에 대한 구성을 표시합니다.
Apache CXF용 HTTP/2 구성
HTTP/2는 Apache Karaf에서 독립 실행형 Apache CXF Cryostat 전송(http-undertow
)을 사용하는 경우 지원됩니다. HTTP/2 프로토콜을 활성화하려면 jaxws:endpoint
요소의 address
속성을 절대 URL로 설정하고 org.apache.cxf.transports.http_undertow.EnableHttp2
속성을 true
로 설정해야 합니다.
이 HTTP/2 구현은 일반 HTTP 또는 HTTPS를 사용하는 서버 측 HTTP/2 전송만 지원합니다.
예 17.3. HTTP/2가 활성화된 Cryostat-WS 끝점 구성
<beans ... xmlns:jaxws="http://cxf.apache.org/jaxws" ... schemaLocation="... http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd ..."> <cxf:bus> <cxf:properties> <entry key="org.apache.cxf.transports.http_undertow.EnableHttp2" value="true"/> </cxf:properties> </cxf:bus> <jaxws:endpoint id="example3" implementor="org.apache.cxf.example.DemoImpl" address="http://localhost:8080/demo" /> </jaxws:endpoint> </beans>
성능 향상을 위해 Red Hat은 웹 컨테이너의 중앙 집중식 구성 및 튜닝을 활성화하는 Apache Karaf(pax-web-undertow
)에서 서블릿 전송을 사용할 것을 권장하지만 pax-web-undertow
는 HTTP/2 전송 프로토콜을 지원하지 않습니다.
17.1.3. jaxws:server Element 사용
17.1.3.1. 개요
jaxws:server
요소는 Cryostat-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는ws
dl:port 요소의 네임스페이스이며 localPart 는wsdl:port
요소의name
속성 값입니다.
17.1.3.3. 속성
jaxws:server
요소의 속성은 끝점의 기본 속성을 구성합니다. 이러한 속성에는 끝점의 주소, 엔드포인트를 구현하는 클래스 및 엔드포인트를 호스팅하는 버스가
포함됩니다.
표 17.2. “jaxws:server Element를 사용하여 Cryostat-WS 서비스 공급자 구성의 속성” jaxws:server
요소의 속성을 설명합니다.
속성 | 설명 |
---|---|
다른 구성 요소가 끝점을 참조하는 데 사용할 수 있는 고유 식별자를 지정합니다. | |
서비스를 구현하는 클래스를 지정합니다. 클래스 이름 또는 구현 클래스를 구성하는 Spring 빈에 대한 ID 참조를 사용하여 구현 클래스를 지정할 수 있습니다. 이 클래스는 classpath에 있어야 합니다. | |
서비스를 구현하는 클래스를 지정합니다. 이 속성은 | |
HTTP 끝점의 주소를 지정합니다. 이 값은 서비스 계약에 지정된 값을 재정의합니다. | |
끝점의 WSDL 계약 위치를 지정합니다. WSDL 계약의 위치는 서비스가 배포된 폴더를 기준으로 합니다. | |
서비스의 | |
서비스의 | |
서비스를 자동으로 게시해야 하는지 여부를 지정합니다. 이 값이 | |
서비스 엔드포인트를 관리하는 데 사용되는 버스를 구성하는 Spring 8080의 ID를 지정합니다. 이는 공통 기능 세트를 사용하도록 여러 끝점을 구성할 때 유용합니다. | |
서비스에서 사용하는 메시지 바인딩의 ID를 지정합니다. 유효한 바인딩 ID 목록은 23장. Apache CXF 바인딩 ID 에 제공됩니다. | |
서비스의 | |
8080이 추상 8080인지 여부를 지정합니다. 추상 빈은 구체적인 8080 정의에 대해 상위 역할을 하며 인스턴스화되지 않습니다. 기본값은 | |
엔드포인트를 인스턴스화하기 전에 끝점이 인스턴스화되는 데 따라 달라지는 빈 목록을 지정합니다. | |
사용자가 Apache CXF API(예:
기본값은
이 값을
|
표 17.2. “jaxws:server Element를 사용하여 Cryostat-WS 서비스 공급자 구성의 속성” 에 나열된 속성 외에도 여러 xmlns:shortName특성을 사용하여
및 endpointName
serviceName
속성에서 사용하는 네임스페이스를 선언해야 할 수 있습니다.
17.1.3.4. 예
예 17.4. “간단한 Cryostat-WS 서버 구성” 엔드포인트가 게시되는 주소를 지정하는 a Cryostat-WS 엔드포인트에 대한 구성이 표시됩니다.
예 17.4. 간단한 Cryostat-WS 서버 구성
<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. “Cryostat-WS 서비스 공급자 구성에 사용되는 요소” jaxws:endpoint
가 지원하는 하위 요소를 설명합니다.
element | 설명 |
---|---|
메시지 처리를 위한 Cryostat-WS Handler 구현 목록을 지정합니다. Cryostat-WS Handler 구현에 대한 자세한 내용은 43장. 처리기 작성 에서 참조하십시오. | |
인바운드 요청을 처리하는 인터셉터 목록을 지정합니다. 자세한 내용은 VII 부. Apache CXF Interceptors 개발 에서 참조하십시오. | |
인바운드 오류 메시지를 처리하는 인터셉터 목록을 지정합니다. 자세한 내용은 VII 부. Apache CXF Interceptors 개발 에서 참조하십시오. | |
아웃바운드 응답을 처리하는 인터셉터 목록을 지정합니다. 자세한 내용은 VII 부. Apache CXF Interceptors 개발 에서 참조하십시오. | |
아웃바운드 오류 메시지를 처리하는 인터셉터 목록을 지정합니다. 자세한 내용은 VII 부. Apache CXF Interceptors 개발 에서 참조하십시오. | |
엔드포인트에서 사용하는 메시지 바인딩을 구성하는 polkit을 지정합니다. 메시지 바인딩은 | |
| 끝점에서 사용하는 데이터 바인딩을 구현하는 클래스를 지정합니다. 포함된 빈 정의를 사용하여 지정됩니다. |
서비스에 사용되는 Java executor를 지정합니다. 포함된 빈 정의를 사용하여 지정됩니다. | |
Apache CXF의 고급 기능을 구성하는 빈 목록을 지정합니다. Quarkus 참조 목록 또는 포함된 빈 목록을 제공할 수 있습니다. | |
서비스에서 사용하는 org.apache.cxf.service.Invoker 인터페이스의 구현을 지정합니다. [c] | |
끝점에 전달되는 속성의 Spring map을 지정합니다. 이러한 속성은 MTOM 지원 활성화와 같은 기능을 제어하는 데 사용할 수 있습니다. | |
서비스를 인스턴스화하는 데 사용되는 | |
[a]
Cryostat 바인딩은 soap:soapBinding 8080을 사용하여 구성됩니다.
[c]
Invoker 구현에서는 서비스 호출 방법을 제어합니다. 예를 들어 서비스 구현의 새 인스턴스에서 각 요청을 처리할지 또는 호출 간에 state가 보존되는지 여부를 제어합니다.
|
17.1.5. Cryostat-WS 끝점에서 스키마 유효성 검사 활성화
17.1.5.1. 개요
schema-validation-enabled
속성을 설정하여 jaxws:endpoint
요소 또는 jaxws:server
요소에 대한 스키마 검증을 활성화할 수 있습니다. 스키마 유효성 검사가 활성화되면 클라이언트와 서버 간에 전송된 메시지가 스키마에 대한 적합성을 확인합니다. 성능에 심각한 영향을 미치므로 기본적으로 스키마 유효성 검사가 꺼집니다.
17.1.5.2. 예
Cryostat-WS 엔드포인트에서 스키마 검증을 활성화하려면 jaxws:properties 하위 요소 또는 jaxws:server
요소의
하위 요소에서 jaxws:
propertiesschema-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절. “스키마 유효성 검사 유형 값” 를 참조하십시오.