Red Hat Training
A Red Hat training course is available for Red Hat Fuse
27.2. 시작 지점 코드 생성
27.2.1. 개요
JAX-WS는 WSDL에 정의된 서비스에서 해당 서비스를 서비스 공급자로 구현할 Java 클래스에 대한 자세한 매핑을 지정합니다. wsdl:portType 요소에서 정의하는 논리 인터페이스는 서비스 끝점 인터페이스(SEI)에 매핑됩니다. WSDL에 정의된 모든 복잡한 유형은 JAXB(Java Architecture for XML Binding) 사양에 정의된 매핑에 따라 Java 클래스에 매핑됩니다. wsdl:service 요소에서 정의한 끝점도 소비자가 서비스를 구현하는 서비스 프로바이더에 액세스하는 데 사용하는 Java 클래스에 생성됩니다.
cxf-codegen-plugin Maven 플러그인이 이 코드를 생성합니다. 또한 구현을 위한 시작점 코드를 생성하는 옵션을 제공합니다. 코드 생성기는 생성된 코드를 제어하기 위한 다양한 옵션을 제공합니다.
27.2.2. 코드 생성기 실행
예 27.1. “서비스 코드 생성” 코드 생성기를 사용하여 서비스에 대한 시작점 코드를 생성하는 방법을 보여줍니다.
예 27.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>-server</extraarg>
<extraarg>-impl</extraarg>
</extraargs>
</wsdlOption>
</wsdlOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
</plugin>이 작업은 다음을 수행합니다.
-
-impl옵션은 WSDL 계약의 각wsdl:portType요소에 대해 쉘 구현 클래스를 생성합니다. -
서버옵션은 서비스 공급자를 독립 실행형 애플리케이션으로 실행하는 간단한main()을 생성합니다. -
sourceRoot는 생성된 코드가 outputDir 이라는 디렉터리에 작성되도록 지정합니다. -
WSDL 요소는 코드가 생성되는 WSDL 계약을 지정합니다.
코드 생성기에 대한 전체 옵션 목록은 44.2절. “cxf-codegen-plugin” 에서 참조하십시오.
27.2.3. 생성된 코드
표 27.1. “서비스 공급자를 위한 생성된 클래스” 서비스 공급자를 생성하기 위해 생성된 파일을 설명합니다.
표 27.1. 서비스 공급자를 위한 생성된 클래스
| 파일 | 설명 |
|---|---|
| SEI입니다. 이 파일에는 서비스 공급자가 구현하는 인터페이스가 포함되어 있습니다. 이 파일을 편집해서는 안 됩니다. | |
|
| 엔드포인트입니다. 이 파일에는 소비자가 서비스에 요청하는 데 사용하는 Java 클래스가 포함되어 있습니다. |
| skeleton 구현 클래스입니다. 이 파일을 수정하여 서비스 공급자를 빌드합니다. | |
|
| 서비스 공급자를 독립형 프로세스로 배포할 수 있는 기본 서버 메인 라인입니다. 자세한 내용은 31장. 서비스 게시 에서 참조하십시오. |
또한 코드 생성기는 WSDL 계약에 정의된 모든 형식에 대해 Java 클래스를 생성합니다.
27.2.4. 생성된 패키지
생성된 코드는 WSDL 계약에 사용되는 네임스페이스를 기반으로 패키지에 배치됩니다. 서비스를 지원하도록 생성된 클래스( wsdl:portType 요소, wsdl:service 요소 및 wsdl:port 요소)는 WSDL 계약의 대상 네임스페이스를 기반으로 하는 패키지에 배치됩니다. 계약의 형식 요소에 정의된 형식을 구현하기 위해 생성된 클래스는 요소의 types targetNamespace 특성을 기반으로 패키지에 배치됩니다.
매핑 알고리즘은 다음과 같습니다.
-
주요
http://또는urn://는 네임스페이스를 제거합니다. -
네임스페이스의 첫 번째 문자열이 유효한 인터넷 도메인인 경우 예를 들어
.com또는 .gov.gov로 끝나는 경우 선행www.는 문자열에서 제거되며 나머지 두 구성 요소는 리플링됩니다. -
네임스페이스의 마지막 문자열이
.xxx또는.xx패턴의 파일 확장자로 끝나는 경우 확장은 제거됩니다. - 네임스페이스의 나머지 문자열이 결과 문자열에 추가되고 점으로 구분됩니다.
- 모든 편지는 소문자로 되어 있습니다.