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. “소비자 코드 생성” 코드 생성기를 사용하여 소비자 코드를 생성하는 방법을 보여줍니다.
예 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 포트 유형 및 CryostatService 서비스)는 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 엔터티를 나타내기 위해 생성됩니다.
-
Cryostater - Greeter
wsdl:portType
요소를 나타내는 Java 인터페이스입니다. Cryostat-WS 용어에서 이 Java 인터페이스는 서비스 엔드포인트 인터페이스(SEI)입니다. -
CryostatService
- CryostatServicewsdl:service
요소를 나타내는 Java 서비스 클래스(javax.xml.ws.Service
라고도 함)입니다. -
PingMeFault - pingMeFault
wsdl:fault
요소를 나타내는 Java 예외 클래스(java.lang.Exception
extending)입니다.
-
Cryostater - Greeter
- org.objectweb.hello_world_soap_http.types 패키지에서 XML 유형을 나타내는 클래스입니다. HelloWorld 예제에서 유일하게 생성된 유형은 요청 및 응답 메시지에 대한 다양한 래퍼입니다. 이러한 데이터 유형 중 일부는 비동기 호출 모델에 유용합니다.