28장. WSDL 계약에서 소비자 개발

초록

소비자를 생성하는 한 가지 방법은 WSDL 계약에서 시작하는 것입니다. 계약은 소비자가 요청하는 서비스의 운영, 메시지 및 전송 세부 사항을 정의합니다. 소비자의 시작점 코드는 WSDL 계약에서 생성됩니다. 소비자에 필요한 기능이 생성된 코드에 추가됩니다.

28.1. Stub 코드 생성

28.1.1. 개요

cxf-codegen-plugin Maven 플러그인은 WSDL 계약에서 스텁 코드를 생성합니다. 스텁 코드는 원격 서비스에서 작업을 호출하는 데 필요한 지원 코드를 제공합니다.

소비자의 경우 cxf-codegen-plugin Maven 플러그인이 다음과 같은 유형의 코드를 생성합니다.

  • 스텁 코드 - 소비자 구현을 위해 파일을 지원합니다.
  • 포인트 코드 시작 - 원격 서비스에 연결하고 원격 서비스에서 모든 작업을 호출하는 샘플 코드입니다.

28.1.2. 소비자 코드 생성

소비자 코드를 생성하려면 cxf-codegen-plugin Maven 플러그인을 사용합니다. 예 28.1. “소비자 코드 생성” 코드 생성기를 사용하여 소비자 코드를 생성하는 방법을 보여 줍니다.Shows how to use the code generator to generate consumer code.

예 28.1. 소비자 코드 생성

<plugin>
  <groupId>org.apache.cxf</groupId>
  <artifactId>cxf-codegen-plugin</artifactId>
  <version>${cxf.version}</version>
  <executions>
    <execution>
      <id>generate-sources</id>
      <phase>generate-sources</phase>
      <configuration>
        <sourceRoot>outputDir</sourceRoot>
        <wsdlOptions>
          <wsdlOption>
            <wsdl>wsdl</wsdl>
            <extraargs>
              <extraarg>-client</extraarg>
            </extraargs>
          </wsdlOption>
        </wsdlOptions>
      </configuration>
      <goals>
        <goal>wsdl2java</goal>
      </goals>
    </execution>
  </executions>
</plugin>

여기서 outputDir 은 생성된 파일이 배치되는 디렉터리의 위치이며 wsdl 은 WSDL 계약의 위치를 지정합니다. -client 옵션은 소비자의 main() 메서드에 대한 시작점 코드를 생성합니다.

cxf-codegen-plugin Maven 플러그인에 사용할 수 있는 전체 인수 목록은 44.2절. “cxf-codegen-plugin” 에서 참조하십시오.

28.1.3. 생성된 코드

코드 생성 플러그인은 예 26.1. “helloworld WSDL 계약” 에 표시된 계약에 대해 다음 Java 패키지를 생성합니다.

  • org.apache.hello_world_soap_http - 이 패키지는 http://apache.org/hello_world_soap_http 대상 네임스페이스에서 생성됩니다. 이 네임스페이스에 정의된 모든 WSDL 엔티티(예: Greeter 포트 유형 및 SOAPService 서비스)는 이 Java 클래스에 매핑됩니다.
  • org.apache.hello_world_soap_http.types - 이 패키지는 http://apache.org/hello_world_soap_http/types 대상 네임스페이스에서 생성됩니다. 이 네임스페이스에 정의된 모든 XML 유형(즉, HelloWorld 계약의 wsdl:types 요소에 정의된 모든 항목)은 이 Java 패키지의 Java 클래스에 매핑됩니다.

cxf-codegen-plugin Maven 플러그인에서 생성된 스텁 파일은 다음 카테고리로 대체됩니다.

  • org.apache.hello_world_soap_http 패키지의 WSDL 엔터티를 나타내는 클래스입니다. 다음 클래스는 WSDL 엔터티를 표현하기 위해 생성됩니다.

    • greeter - Greeter wsdl:portType 요소를 나타내는 Java 인터페이스입니다. JAX-WS 용어에서 이 Java 인터페이스는 서비스 엔드포인트 인터페이스(SEI)입니다.
    • SOAPService - SOAPService wsdl:service 요소를 나타내는 Java 서비스 클래스(extending javax.xml.ws.Service)입니다.
    • PingMeFault - pingMeFault wsdl:fault 요소를 나타내는 Java 예외 클래스 (extending java.lang.Exception)입니다.
  • org.objectweb.hello_world_soap_http.types 패키지에서 XML 유형을 나타내는 클래스입니다. HelloWorld 예에서 생성된 유일한 유형은 요청 및 응답 메시지에 대한 다양한 래퍼입니다. 이러한 데이터 유형 중 일부는 비동기 호출 모델에 유용합니다.