JAX-WS 애플리케이션에 대한 wsgen 명령
wsgen 명령행 도구는 Java™ 코드에서 시작할 때 JAX-WS(Java API for XML Web Services) 애플리케이션에 필요한 필수 아티팩트를 생성합니다. 다른 Java 버전과 플랫폼 전체에 걸쳐 휴대용이게 하면서 생성된 아티팩트는 Java 5 준수입니다.
상향식 접근법을 사용하여 JAX-WS 웹 서비스를 개발하고 서비스 엔드포인트 구현에서 시작할 때, wsgen 도구를 사용하여 필수 JAX-WS 아티팩트를 생성하십시오.


- 메시지 컨텐츠를 마샬링하고 역마샬링하기 위해 필요한 추가 JAXB(Java Architecture for XML Binding) 클래스.
- 선택적 -wsdl 인수가 지정되는 경우 WSDL 파일. wsgen 도구는 WSDL 파일을 자동적으로 생성하지 않습니다.
JAX-WS V2.2 도구를 사용할 때, java.lang.RuntimeException 및 java.rmi.RemoteException 참조 및 해당 하위 클래스가 더 이상 WSDL 파일에 맵핑되지 않습니다. 이 동작 변경은 스펙의 섹션 3.7에서 설명되는 JAX-WS V2.1 스펙 적합성 규칙을 따릅니다. java.lang.RuntimeException과 java.rmi.RemoteException 클래스와 해당 서브클래스가 WSDL 파일에서 서비스별 예외와 맵핑됨으로 처리될 수 없는 것을 이 적합성 규칙은 지정합니다.
명령행에서 도구를 사용할 수도 있고 WebSphere Application Server Traditional의 Ant 빌드 환경에서 이 JAX-WS 도구를 호출할 수도 있습니다. Ant 빌드 환경에서 com.sun.tools.ws.ant.WsGen Ant 태스크를 사용하여 wsgen 도구를 호출하십시오. 이러한 Ant 태스크를 올바르게 작동하려면 ws_ant 스크립트를 사용하여 Ant를 호출해야 합니다.

Error: Two classes have the same XML type name ....
Use @XmlType.name and @XmlType.namespace to assign different names to them...
이 오류는 동일한 이름을 가지고 있는 클래스 이름 또는 @XMLType.name 값을 가지고 있는 것을 나타내지만, 다양한 Java
패키지 내에 존재합니다. 이 오류를 방지하려면, XML 유형을 분간하기 위해 @XML.Type.namespace 클래스를 기존 @XMLType 어노테이션에
추가하십시오. gotchaJAX-WS 애플리케이션으로 wsgen 명령행 도구가 전체 프로파일에서 공유 클래스 파일을 찾을 수 없습니다. com.ibm.websphere.webservices.WSDL_Generation_Extra_ClassPath 사용자 정의 특성을 사용하여 이러한 클래스 파일의 위치를 찾을 수 있습니다. 자세한 정보는 JVM(Java virtual machine) 사용자 정의 특성에 대한 문서를 참조하십시오.
구문
명령행 구문은 다음과 같습니다.
![[Windows]](../images/windows.gif)
app_server_root\bin\wsgen.bat [options] service_implementation_class
![[AIX]](../images/aixlogo.gif)
![[HP-UX]](../images/hpux.gif)
![[Linux]](../images/linux.gif)
![[Solaris]](../images/solaris.gif)
app_server_root/bin/wsgen.sh [options] service_implementation_class
![[IBM i]](../images/iseries.gif)
app_server_root/bin/wsgen [options] service_implementation_class
매개변수
service_implementation_class 이름은 요구되는 유일한 매개변수입니다. 다음 매개변수는 wsgen 명령을 위한 선택사항입니다.
- -classpath <path>
- 서비스 구현 클래스의 위치를 지정합니다.
- -cp <path>
- 서비스 구현 클래스의 위치를 지정합니다. 이 매개변수는 -classpath <path>와 동일합니다.
- -d <directory>
- 생성된 출력 파일을 두려는 위치를 지정합니다.
- -extension
- JAX-WS 스펙에 의해 지정되지 않는 기능을 위한 사용자 정의 확장자를 사용할지 여부를 지정합니다. 확장자의 사용은 결과적으로 휴대용이지 않거나 다른 구현과 상호작용하지 않는 애플리케이션이 될 수 있습니다.
- -help
- 도움말 메뉴를 표시합니다.
- -keep
- 생성된 소스 파일을 유지할지를 지정합니다.
- -r <directory>
- 이 매개변수가 -wsdl 매개변수와 함께 사용됩니다. 생성된 WSDL 파일을 두려는 위치를 지정합니다.
- -s <directory>
- 생성된 소스 파일을 배치하기 위한 디렉토리를 지정합니다.
- -verbose
- 컴파일러가 수행하는 것에 대한 메시지를 출력하도록 지정합니다.
- -version
- 버전 정보를 인쇄합니다. 이 옵션을 지정하면, 버전 정보만 출력되고 일반 명령 처리는 발생하지 않습니다.
- -wsdl [:protocol]
- 기본적으로 wsgen 도구는 WSDL 파일을 생성하지 않습니다. 엔드포인트가 배치되기 전에 이 임의 매개변수는 wsgen이 WSDL 파일을 생성하게 하고, 단지 일반적으로 개발자가 WSDL 파일을 검토할 수 있게 하는 데 사용됩니다. protocol은 선택적이고 wsdl:binding에서 사용된 프로토콜을 지정합니다. protocol의 올바른 값은 soap 1.1 및 Xsoap 1.2입니다. 기본값은 soap 1.1입니다. Xsoap 1.2 값은 표준이 아니고, 단지 -extension 옵션과 함께 사용됩니다.
- -servicename <name>
- 이 매개변수는 -wsdl 옵션과 함께 사용됩니다.
WSDL 파일에서 생성할 wsdl:service 이름을 지정합니다. 예를 들어, 다음과 같습니다.
-service name "{http://mynamespace/}MyService"
- -portname
- 이 매개변수는 -wsdl 옵션과 함께 사용됩니다.
WSDL 파일에서 생성할 wsdl:port 이름을 지정합니다. 예를 들어, 다음과 같습니다.
-portname "{http://mynamespace/}MyPort"