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 엔터티를 표현하기 위해 생성됩니다.
- org.objectweb.hello_world_soap_http.types 패키지에서 XML 유형을 나타내는 클래스입니다. HelloWorld 예에서 생성된 유일한 유형은 요청 및 응답 메시지에 대한 다양한 래퍼입니다. 이러한 데이터 유형 중 일부는 비동기 호출 모델에 유용합니다.