WSDL 파일에서 JAX-WS 클라이언트 개발
JAX-WS(Java™ API for XML-Based Web Services) 도구에서는 WSDL(Web Services Description Language) 파일로 시작할 때 정적 JAX-WS 웹 서비스 클라이언트를 개발하는 데 필요한 Java 아티팩트 생성을 지원합니다.
시작하기 전에
WSDL 파일이 로컬 파일인 경우, 해당 URL은
file:drive:\path\file_name.wsdl입니다.
WSDL 파일이 로컬 파일인 경우,
해당 URL은 file:/path/file_name.wsdl입니다.
로컬 파일은 절대 또는 상대 파일 시스템 경로를 사용하여 지정할 수도 있습니다.
이 태스크 정보
- 서비스 엔드포인트 인터페이스(SEI)
- 서비스 클래스
- wsdl:fault 클래스(있는 경우)에서 맵핑된 예외 클래스
- XML 스키마 유형에서 맵핑된 Java 클래스에 해당되는 JAXB(Java Architecture for XML Binding)의 생성된 값 유형


명령행에서 도구를 사용하는 방법 외에도 Ant 빌드 환경에서 이 JAX-WS 도구를 호출할 수 있습니다. Ant 빌드 환경에서 com.sun.tools.ws.ant.WsImport Ant 태스크를 사용하여 wsimport 도구를 호출합니다. 올바르게 작동하려면 이 Ant 태스크에서는 ws_ant 스크립트를 사용하여 Ant를 호출해야 합니다.
프로시저
![[Windows]](../images/windows.gif)
app_server_root\bin\wsimport.bat wsdl_URL
![[AIX]](../images/aixlogo.gif)
![[HP-UX]](../images/hpux.gif)
![[Linux]](../images/linux.gif)
![[Solaris]](../images/solaris.gif)
app_server_root/bin/wsimport.sh wsdl_URL
![[IBM i]](../images/iseries.gif)
app_server_root/bin/wsimport wsdl_URL
- 명령을 실행할 때 생성된 파일 목록을 보려면 -verbose 옵션을 사용하십시오.
- -keep 옵션을 사용하여 생성된 Java 파일을 유지하십시오.
- -wsdlLocation 옵션을 사용하여 WSDL 파일의 위치를 지정하십시오.
우수 사례: 다른 시스템에 이식 가능한 JAX-WS 웹 서비스 클라이언트 엔터프라이즈 아카이브(EAR) 파일을 생성하도록 보장하는 우수 사례는, 웹 서비스 클라이언트 Java 아카이브(JAR) 파일 또는 웹 애플리케이션 아카이브(WAR) 파일과 같은 애플리케이션 모듈에서 WSDL 문서를 패키지하는 것입니다. -wsdllocation 어노테이션 속성을 사용하여 WSDL 파일의 위치에 대한 상대 URI를 지정할 수 있습니다. 예를 들어, MyService.wsdl 파일이 META-INF/wsdl/ 디렉토리에 있는 경우 wsimport 도구를 실행하고 -wsdllocation 옵션을 사용하여 WSDL 파일의 위치에 사용할 값을 지정하십시오. 그러면, 생성된 아티팩트가 관리 콘솔에 애플리케이션을 로드할 때 필요한 올바른 -wsdllocation 정보를 포함할 수 있습니다.
bpracwsimport -keep -wsdllocation /META-INF/wsdl/MyService.wsdl
- 사용자 정의를 포함하는 외부 바인딩 파일을 지정하도록
WSDL 또는 스키마 사용자 정의를 사용하는 경우
-b 옵션을 사용합니다.
비동기 맵핑 또는 첨부 파일을 사용하도록 WSDL 파일에서 바인딩을 사용자 정의할 수 있습니다. 비동기 인터페이스를 생성하려면 클라이언트 측 전용 사용자 정의 enableAsyncMapping 바인딩 선언을 wsdl:definitions 요소 또는 WSDL 파일에 정의된 외부 바인딩 파일에 추가합니다. 사용자 정의 클라이언트 또는 서버 바인딩 파일에서 enableMIMEContent 바인딩 선언을 사용하여 기본 mime:content 맵핑 규칙을 사용하거나 사용하지 않습니다. 사용자 정의 바인딩 선언에 대한 추가 정보는 8장, JAX-WS 스펙을 참조하십시오.
이 명령 및 지정할 수 있는 추가 옵션에 대해 자세히 학습하려면 wsimport 명령을 참조하십시오.
결과
예
- 다음 ping.wsdl 파일을 임시 디렉토리에 복사하십시오.
<?xml version="1.0" encoding="UTF-8"?> <!-- * This program can be used, run, copied, modified and distributed * without royalty for the purpose of developing, using, marketing, or distributing. --> <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://com/ibm/was/wssample/sei/ping/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="PingService" targetNamespace="http://com/ibm/was/wssample/sei/ping/"> <wsdl:types> <xsd:schema targetNamespace="http://com/ibm/was/wssample/sei/ping/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="pingStringInput"> <xsd:complexType> <xsd:sequence> <xsd:element name="pingInput" type="xsd:string" /> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> </wsdl:types> <wsdl:message name="pingOperationRequest"> <wsdl:part element="tns:pingStringInput" name="parameter" /> </wsdl:message> <wsdl:portType name="PingServicePortType"> <wsdl:operation name="pingOperation"> <wsdl:input message="tns:pingOperationRequest" /> </wsdl:operation> </wsdl:portType> <wsdl:binding name="PingSOAP" type="tns:PingServicePortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> <wsdl:operation name="pingOperation"> <soap:operation soapAction="pingOperation" style="document" /> <wsdl:input> <soap:body use="literal" /> </wsdl:input> </wsdl:operation> </wsdl:binding> <wsdl:service name="PingService"> <wsdl:port binding="tns:PingSOAP" name="PingServicePort"> <soap:address location="http://localhost:9080/WSSampleSei/PingService" /> </wsdl:port> </wsdl:service> </wsdl:definitions>
- app_server_root\bin\ 디렉토리에서
wsimport 명령을 실행하십시오.
app_server_root\bin\wsimport.bat -keep -verbose ping.wsdl
AIX® 또는 Linux와 같은 운영 체제는 다음 명령을 실행하여 내보낸 변수를 상속하도록 상위 쉘로 스크립트를 소싱합니다.
/app_server_root>/bin directory. 다음 wsimport 명령을 실행하십시오.. ./setupCmdLine.sh (Notice the space between the periods.)
app_server_root/bin/wsimport.sh -keep -verbose ping.wsdl
app_server_root/bin/wsimport -keep -verbose ping.wsdl
com\ibm\was\wssample\sei\ping\ObjectFactory.java
com\ibm\was\wssample\sei\ping\package-info.java
com\ibm\was\wssample\sei\ping\PingServicePortType.java
com\ibm\was\wssample\sei\ping\PingService.java
com\ibm\was\wssample\sei\ping\PingStringInput.java
ObjectFactory.java, PingService.java, PingServicePortType.java 파일은 Java 아카이브(JAR) 또는 웹 애플리케이션(WAR) 파일 내부의 클라이언트 구현을 통해 Java 아티팩트를 패키지하는 경우 사용할 생성된 Java 클래스 파일입니다.