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 요소의 네임스페이스이며 localPartwsdl:port 요소의 name 속성 값입니다.

17.1.2.3. 속성

jaxws:endpoint 요소의 속성은 끝점의 기본 속성을 구성합니다. 이러한 속성에는 끝점의 주소, 엔드포인트를 구현하는 클래스 및 엔드포인트를 호스팅하는 버스가 포함됩니다.

표 17.1. “jaxws:endpoint Element를 사용하여 Cryostat-WS 서비스 공급자 구성의 속성” jaxws:endpoint 요소의 속성을 설명합니다.

표 17.1. jaxws:endpoint Element를 사용하여 Cryostat-WS 서비스 공급자 구성의 속성
속성설명

id

다른 구성 요소가 끝점을 참조하는 데 사용할 수 있는 고유 식별자를 지정합니다.

구현자

서비스를 구현하는 클래스를 지정합니다. 클래스 이름 또는 구현 클래스를 구성하는 Spring 빈에 대한 ID 참조를 사용하여 구현 클래스를 지정할 수 있습니다. 이 클래스는 classpath에 있어야 합니다.

implementorClass

서비스를 구현하는 클래스를 지정합니다. 이 속성은 구현 자 속성에 제공된 값이 Spring AOP를 사용하여 래핑되는ans에 대한 참조인 경우 유용합니다.

address

HTTP 끝점의 주소를 지정합니다. 이 값은 서비스 계약에 지정된 값을 재정의합니다.

wsdlLocation

끝점의 WSDL 계약 위치를 지정합니다. WSDL 계약의 위치는 서비스가 배포된 폴더를 기준으로 합니다.

endpointName

서비스의 wsdl:port 요소의 name 속성 값을 지정합니다. ns:name 형식을 사용하여 QName으로 지정됩니다. 여기서 nswsdl:port 요소의 네임스페이스입니다.

serviceName

서비스의 wsdl:service 요소의 name 특성 값을 지정합니다. ns:name 형식을 사용하여 QName으로 지정됩니다. 여기서 nswsdl:service 요소의 네임스페이스입니다.

publish

서비스를 자동으로 게시해야 하는지 여부를 지정합니다. 이 값이 false 로 설정된 경우 개발자는 31장. 서비스 게시 에 설명된 끝점을 명시적으로 게시해야 합니다.

버스

서비스 엔드포인트를 관리하는 데 사용되는 버스를 구성하는 Spring 8080의 ID를 지정합니다. 이는 공통 기능 세트를 사용하도록 여러 끝점을 구성할 때 유용합니다.

bindingUri

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

name

서비스의 wsdl:port 요소의 문자열화된 QName을 지정합니다. {ns}localPart 형식을 사용하여 QName으로 지정됩니다. NS는 ws dl:port 요소의 네임스페이스이며 localPartwsdl:port 요소의 name 속성 값입니다.

abstract

8080이 추상 8080인지 여부를 지정합니다. 추상 빈은 구체적인 8080 정의에 대해 상위 역할을 하며 인스턴스화되지 않습니다. 기본값은 false입니다. true 로 설정하면 Cryostat 팩토리에서 8080을 인스턴스화하지 않도록 지시합니다.

Dependent-on

끝점이 인스턴스화되기 전에 인스턴스화되는 경우 종속되는 빈 목록을 지정합니다.

createdFromAPI

사용자가 Apache CXF API(예: Endpoint.publish() 또는 Service.getPort() )를 사용하여 해당 8080을 만들도록 지정합니다.

기본값은 false입니다.

이 값을 true 로 설정하면 다음이 수행됩니다.

  • .jaxws-endpoint 를 ID에 추가하여 빈의 내부 이름 변경
  • 8080을 추상화합니다.

publishedEndpointUrl

생성된 WSDL의 address 요소에 배치되는 URL입니다. 이 값을 지정하지 않으면 address 속성 값이 사용됩니다. 이 속성은 "public" URL이 서비스가 배포된 URL과 동일하지 않을 때 유용합니다.

표 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 요소의 네임스페이스이며 localPartwsdl:port 요소의 name 속성 값입니다.

17.1.3.3. 속성

jaxws:server 요소의 속성은 끝점의 기본 속성을 구성합니다. 이러한 속성에는 끝점의 주소, 엔드포인트를 구현하는 클래스 및 엔드포인트를 호스팅하는 버스가 포함됩니다.

표 17.2. “jaxws:server Element를 사용하여 Cryostat-WS 서비스 공급자 구성의 속성” jaxws:server 요소의 속성을 설명합니다.

표 17.2. jaxws:server Element를 사용하여 Cryostat-WS 서비스 공급자 구성의 속성
속성설명

id

다른 구성 요소가 끝점을 참조하는 데 사용할 수 있는 고유 식별자를 지정합니다.

serviceBean

서비스를 구현하는 클래스를 지정합니다. 클래스 이름 또는 구현 클래스를 구성하는 Spring 빈에 대한 ID 참조를 사용하여 구현 클래스를 지정할 수 있습니다. 이 클래스는 classpath에 있어야 합니다.

serviceClass

서비스를 구현하는 클래스를 지정합니다. 이 속성은 구현 자 속성에 제공된 값이 Spring AOP를 사용하여 래핑되는ans에 대한 참조인 경우 유용합니다.

address

HTTP 끝점의 주소를 지정합니다. 이 값은 서비스 계약에 지정된 값을 재정의합니다.

wsdlLocation

끝점의 WSDL 계약 위치를 지정합니다. WSDL 계약의 위치는 서비스가 배포된 폴더를 기준으로 합니다.

endpointName

서비스의 wsdl:port 요소의 name 속성 값을 지정합니다. ns:name 형식을 사용하여 QName으로 지정됩니다. 여기서 nswsdl:port 요소의 네임스페이스입니다.

serviceName

서비스의 wsdl:service 요소의 name 특성 값을 지정합니다. ns:name 형식을 사용하여 QName으로 지정됩니다. 여기서 nswsdl:service 요소의 네임스페이스입니다.

publish

서비스를 자동으로 게시해야 하는지 여부를 지정합니다. 이 값이 false 로 설정된 경우 개발자는 31장. 서비스 게시 에 설명된 끝점을 명시적으로 게시해야 합니다.

버스

서비스 엔드포인트를 관리하는 데 사용되는 버스를 구성하는 Spring 8080의 ID를 지정합니다. 이는 공통 기능 세트를 사용하도록 여러 끝점을 구성할 때 유용합니다.

bindingId

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

name

서비스의 wsdl:port 요소의 문자열화된 QName을 지정합니다. {ns}localPart 형식을 사용하여 QName으로 지정됩니다. 여기서 nswsdl:port 요소의 네임스페이스이고 localPartwsdl:port 요소의 name 속성 값입니다.

abstract

8080이 추상 8080인지 여부를 지정합니다. 추상 빈은 구체적인 8080 정의에 대해 상위 역할을 하며 인스턴스화되지 않습니다. 기본값은 false입니다. true 로 설정하면 Cryostat 팩토리에서 8080을 인스턴스화하지 않도록 지시합니다.

Dependent-on

엔드포인트를 인스턴스화하기 전에 끝점이 인스턴스화되는 데 따라 달라지는 빈 목록을 지정합니다.

createdFromAPI

사용자가 Apache CXF API(예: Endpoint.publish() 또는 Service.getPort() )를 사용하여 해당 8080을 만들도록 지정합니다.

기본값은 false입니다.

이 값을 true 로 설정하면 다음이 수행됩니다.

  • .jaxws-endpoint 를 ID에 추가하여 빈의 내부 이름 변경
  • 8080을 추상화합니다.

표 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:endpointjaxws:server 요소는 서비스 공급자를 인스턴스화하는 데 필요한 기본 구성 정보를 제공합니다. 서비스 공급자에 기능을 추가하거나 고급 구성을 수행하려면 구성에 하위 요소를 추가해야 합니다.

자식 요소는 다음을 수행할 수 있도록 합니다.

17.1.4.2. 요소

표 17.3. “Cryostat-WS 서비스 공급자 구성에 사용되는 요소” jaxws:endpoint 가 지원하는 하위 요소를 설명합니다.

표 17.3. Cryostat-WS 서비스 공급자 구성에 사용되는 요소
element설명

jaxws:handlers

메시지 처리를 위한 Cryostat-WS Handler 구현 목록을 지정합니다. Cryostat-WS Handler 구현에 대한 자세한 내용은 43장. 처리기 작성 에서 참조하십시오.

jaxws:inInterceptors

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

jaxws:inFaultInterceptors

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

jaxws:outInterceptors

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

jaxws:outFaultInterceptors

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

jaxws:binding

엔드포인트에서 사용하는 메시지 바인딩을 구성하는 polkit을 지정합니다. 메시지 바인딩은 org.apache.cxf.binding.Binding factory 인터페이스의 구현을 사용하여 구성됩니다.[a]

jaxws:dataBinding [b]

끝점에서 사용하는 데이터 바인딩을 구현하는 클래스를 지정합니다. 포함된 빈 정의를 사용하여 지정됩니다.

jaxws:executor

서비스에 사용되는 Java executor를 지정합니다. 포함된 빈 정의를 사용하여 지정됩니다.

jaxws:features

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

jaxws:invoker

서비스에서 사용하는 org.apache.cxf.service.Invoker 인터페이스의 구현을 지정합니다. [c]

jaxws:properties

끝점에 전달되는 속성의 Spring map을 지정합니다. 이러한 속성은 MTOM 지원 활성화와 같은 기능을 제어하는 데 사용할 수 있습니다.

jaxws:serviceFactory

서비스를 인스턴스화하는 데 사용되는 JaxWsServiceFactoryBean 오브젝트를 구성합니다.

[a] Cryostat 바인딩은 soap:soapBinding 8080을 사용하여 구성됩니다.
[b] jaxws:endpoint 요소는 jaxws:dataBinding 요소를 지원하지 않습니다.
[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: 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절. “스키마 유효성 검사 유형 값” 를 참조하십시오.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.