JAX-WS 애플리케이션에 대한 wsimport 명령
wsimport 명령행 도구는 기존 WSDL(Web Services Description Language) 파일을 처리하고 JAX-WS(Java™ API for XML-Based Web Services) 웹 서비스 애플리케이션을 개발하기 위한 필수 아티팩트를 생성합니다. 다른 Java 버전과 플랫폼 전체에 걸쳐 휴대용이게 하면서 생성된 아티팩트는 Java 5 준수입니다.
wsimport 명령행은 JAX-WS 웹 서비스 개발에 대한 하향식 접근법을 지원합니다. 기존 WSDL 파일로 시작할 때, 필수 JAX-WS 아티팩트를 생성하기 위해 wsimport 명령행 도구를 사용하십시오.


참고: wsimport,
wsgen, schemagen 및 xjc 명령행 도구를
애플리케이션 서버의 WebSphere Application Server Traditional 및 Liberty 둘 다에 사용할 수 있습니다.
wsimport 도구는 기존 WSDL 파일을 읽고 다음 아티팩트를 생성합니다.
- SEI(Service Endpoint Interface) - SEI는 웹 서비스에 대한 WSDL 파일의 어노테이션이 있는 Java 표시입니다. 이 인터페이스는 JavaBeans 엔드포인트를 구현하거나 동적 프록시 클라이언트 인스턴스를 작성하기 위해 사용됩니다.
- javax.xml.ws.Service 확장자 클래스 - 이는 javax.xml.ws.Service 클래스를 확장하는 생성된 클래스입니다. 이 클래스는 동적 프록시와 디스패치 인스턴스 모두를 구성하고 작성하는 데 사용됩니다.
- 웹 서비스 데이터를 모델링하기 위해 필요한 JAXB(Java Architecture for XML Binding) Bean을 포함하는 필수 데이터 Bean.

- 주요 WSDL 파일 내에 모든 서비스를 정의해야 합니다. 가져온 WSDL 파일 내에 정의되는 서비스는 wsimport 도구에 의해 처리되지 않습니다.
- 문서 또는 리터럴 스타일 패턴을 구현하는 WSDL 파일에서 wsimport 도구를 실행하면, 입력과 출력 유형을 정의하는 complexTypes 요소가 조작을 위한 매개변수 목록에서 이름 지정 충돌을 방지하기 위해 고유 이름으로 구성되어야 합니다.
- wsimport 도구를 실행하고 WSDL 파일에 대한 매개변수로서 ?wsdl URI(Uniform Resource Identifier)를 전달하면, 실제 해결된 WSDL URI를 사용하고 있는지 확인하십시오. 전체 프로파일에서 wsimport 도구는 올바르게 ?wsdl URI를 해결하지만 참조되는 기타 상대 URI가 올바르게 해결되지 않을 수도 있습니다. Liberty 프로파일에서 wsimport 도구는 ?wsdl URI 및 참조되는 기타 상대 URI를 올바르게 해결합니다.
명령행에서 도구를 사용할 수도 있고 WebSphere Application Server Traditional의 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 [options] WSDL_URI
![[AIX]](../images/aixlogo.gif)
![[HP-UX]](../images/hpux.gif)
![[Linux]](../images/linux.gif)
![[Solaris]](../images/solaris.gif)
app_server_root/bin/wsimport.sh [options] WSDL_URI
![[IBM i]](../images/iseries.gif)
app_server_root/bin/wsimport [options] WSDL_URI
매개변수
WSDL_URI는 요구되는 유일한 매개변수입니다. 다음 매개변수는 wsimport 명령을 위한 선택사항입니다.
- -b <path>
- 외부 JAX-WS 또는 JAXB 바인딩 파일을 지정합니다. -b 옵션을 사용하여 다중 JAX-WS 및 JAXB 바인딩 파일을 지정할 수 있습니다. 그러나 각 파일은 자체 -b 옵션으로 지정되어야 합니다.
- -B <jaxbOption>
- 이 옵션을 JAXB 스키마 컴파일러로 전달하도록 지정합니다.
- -catalog
- 외부 엔티티 참조를 해결하기 위해 카탈로그 파일을 지정합니다. 이는 TR9401, XCatalog 및 OASIS XML 카탈로그 형식을 지원합니다.
- -d <directory>
- 생성된 출력 파일을 두려는 위치를 지정합니다.
- -extension
- JAX-WS 스펙에 의해 지정되지 않는 기능을 위한 사용자 정의 확장자를 승인할지를 지정합니다. 사용자 정의 확장자의 사용은 결과적으로 휴대용이지 않거나 다른 구현과 상호작용하지 않는 애플리케이션이 될 수 있습니다.
- -help
- 도움말 메뉴를 표시합니다.
- -httpproxy:<host>:<port>
- HTTP 프록시를 지정합니다. 기본 포트 값은 8080입니다.
- -keep
- 생성된 소스 파일을 유지할지를 지정합니다.
- -p <package_name>
- 이 명령행 옵션을 가진 대상 패키지를 지정하고 JAX-WS 스펙에 정의된 패키지 이름과 기본 패키지 이름 알고리즘에 대해 WSDL 파일과 스키마 바인딩 사용자 정의를 대체합니다.
- -quiet
- wsimport 출력을 억제하도록 지정합니다.
- -s <directory>
- 생성된 소스 파일을 배치하기 위한 디렉토리를 지정합니다.
- -target <version>
- 특정 JAX-WS 스펙 레벨을 따르는 코드를 생성하도록 지정합니다. 각각 JAX-WS 2.0 또는 JAX-WS 2.1 스펙을 따르는 코드를 생성하도록 버전 2.0 또는 2.1을 지정하십시오. 버전 2.1을 지정하면 JAX-WS 2.1 스펙을 따르는 코드를 생성하도록 표시합니다. 기본값은 버전 2.2이고 JAXB 2.2 스펙에 대한 준수 코드를 생성합니다.
- target 옵션은 Liberty 프로파일에 필요합니다.
- -verbose
- 컴파일러가 수행하는 것에 대한 메시지를 출력하도록 지정합니다.
- -version
- 버전 정보를 인쇄합니다. 이 옵션을 지정하면, 버전 정보만 출력에 포함되고 일반 명령 처리는 발생하지 않습니다.
- -wsdlLocation
- @WebServiceClient.wsdlLocation 값을 지정합니다.
지원된 구성: wsimport 도구는 기본적으로 또는 -wsdlLocation 속성이 지정될 때 @WebService.wsdlLocation 값을 설정하지 않습니다. wsimport 명령행 도구는 @WebServiceClient.wsdlLocation 어노테이션만 업데이트합니다. WSDL(Web Services Description Language) 파일의 위치를 지정하는 상대 URL로 @WebService.wsdlLocation 어노테이션을 수동으로 업데이트할 수 있습니다. @WebService.wsdlLocation 어노테이션이 엔드포인트 구현 클래스에 존재하면, 값은 상대 URL이어야 하고 참조하는 WSDL 문서가 애플리케이션으로 패키징되어야 합니다. sptcfg
문제점 방지: -wsdlLocation 매개변수를 위해 HTTPS URL을 지정하면 wsimport 도구는 올바르지 않은 인수가 아닌 생성자로 서비스 클래스를 생성합니다. 서비스를 인스턴스화하기 위해 인수가 아닌 서비스 생성자 사용을 피하십시오. 대신, 인수에 대해 WSDL URL을 사용하는 서비스 클래스 생성자 중 하나로 HTTPS URL을 전달하십시오. 예:
gotchaMyService("https://example.ibm.com/My?wsdl");
- -clientJar
- 서비스 WSDL의 wsimport는 웹 서비스 호출에 필요한 필수 클래스를 생성합니다. 그러나 JAX-WS 런타임에서 요청하는 모든 정보가 표준 웹 서비스 어노테이션을 통하여 SEI 또는 WebServiceClient에서 캡처되는 것은 아닙니다. 런타임 시 서비스의 추가적 메타데이터를 검색할 수 있도록 생성된 클래스는 WSDL의 위치를 가지고 있습니다. 그러나 추가 연결은 서비스 인스턴스가 작성될 때마다 메타데이터에 액세스하려면 바로 요구되며, 네트워크 사용을 증가시킵니다. wsimport에 대한 -clientJar 옵션을 사용하여 WSDL과 스키마는 자동으로 다운로드되고 모든 생성된 클라이언트 측 아티팩트가 JAR 파일에 패키지됩니다. 따라서, 이 새 옵션을 사용하여 생성된 JAR 파일을 클래스 경로에 포함시킬 수 있고 서비스 인스턴스를 작성할 때마다 엔드포인트에서 WSDL을 페치할 필요가 없습니다. 이로 인해, 네트워크 사용이 절약됩니다.