wsgen command for JAX-WS applications
The wsgen command-line tool generates the necessary artifacts required for Java™ API for XML Web Services (JAX-WS) applications when starting from Java code. The generated artifacts are Java 5 compliant, making them portable across different Java versions and platforms.
When using a bottoms-up approach to develop JAX-WS web services and you are starting from a service endpoint implementation, use the wsgen tool to generate the required JAX-WS artifacts.


- any additional Java Architecture for XML Binding (JAXB) classes that are required to marshal and unmarshal the message contents.
- a WSDL file if the optional -wsdl argument is specified. The wsgen tool does not automatically generate the WSDL file.
When using JAX-WS V2.2 tools, java.lang.RuntimeException and java.rmi.RemoteException references and their subclasses are no longer mapped in the WSDL file. This behavior change complies with the JAX-WS V2.1 specification conformance rule that is described in section 3.7 of the specification. This conformance rule specifies that the java.lang.RuntimeException and java.rmi.RemoteException classes and their subclasses cannot be treated as service-specific exceptions and mapped in the WSDL file.
除了使用來自指令行的工具外,您也可以從 Ant 建置環境內,為 WebSphere Application Server 傳統版呼叫這些 JAX-WS 工具。在 Ant 建置環境中使用 com.sun.tools.ws.ant.WsGen Ant 作業可以呼叫 wsgen 工具。為了讓功能正常運作,這項 Ant 作業需要您使用 ws_ant Script 來呼叫 Ant。

Error: Two classes have the same XML type name ....
Use @XmlType.name and @XmlType.namespace to assign different names to them...
This error indicates you have class names or @XMLType.name values that have the same name, but exist
within different Java packages. To prevent this error, add the
@XML.Type.namespace class to the existing @XMLType annotation to differentiate between the XML
types.gotchaWith JAX-WS applications, the wsgen command-line tool might not locate shared class files in the full profile. You can specify the location of these class files using the com.ibm.websphere.webservices.WSDL_Generation_Extra_ClassPath custom property. For more information, see the documentation about the Java virtual machine custom properties.
Syntax
The command-line syntax is:
![[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
Parameters
The service_implementation_class name is the only parameter that is required. The following parameters are optional for the wsgen command:
- -classpath <path>
- Specifies the location of the service implementation class.
- -cp <path>
- Specifies the location of the service implementation class. This parameter is the same as -classpath <path>.
- -d <directory>
- Specifies where to place the generated output files.
- -extension
- Specifies whether to enable custom extensions for functionality not specified by the JAX-WS specification. Use of the extensions can result in applications that are not portable or do not interoperate with other implementations.
- -help
- Displays the help menu.
- -keep
- Specifies whether to keep the generated source files.
- -r <directory>
- This parameter is only used with the -wsdl parameter. Specifies where to place the generated WSDL file.
- -s <directory>
- Specifies the directory to place the generated source files.
- -verbose
- Specifies to output messages about what the compiler is doing.
- -version
- Prints the version information. If you specify this option, only the version information is output and normal command processing does not occur.
- -wsdl [:protocol]
- By default, the wsgen tool does not generate a WSDL file. This optional parameter causes wsgen to generate a WSDL file and is typically only used to enable a developer to review a WSDL file before the endpoint is deployed. The protocol is optional and specifies the protocol used in the wsdl:binding. Valid values for protocol are soap 1.1 and Xsoap 1.2. The default value is soap 1.1. The Xsoap 1.2 value is not standard and is only used with the -extension option.
- -servicename <name>
- This parameter is only used with the -wsdl option. Specifies a
wsdl:service name to be generated in the WSDL file. For example,
-service name "{http://mynamespace/}MyService"
- -portname
- This parameter is only used with the -wsdl option. Specifies a
wsdl:port name to be generated in the WSDL file. For example,
-portname "{http://mynamespace/}MyPort"