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.
In addition to using the tools from the command line,
you can invoke these JAX-WS tools from within the Ant build environments for the full profile. Use
the com.sun.tools.ws.ant.WsGen
Ant task from within the Ant build environment to
invoke the wsgen tool. To function properly, this Ant task requires that you invoke Ant using the
ws_ant script.
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.
With 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:
app_server_root\bin\wsgen.bat [options] service_implementation_class
app_server_root/bin/wsgen.sh [options] service_implementation_class
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 thewsdl:binding
. Valid values forprotocol
aresoap 1.1
andXsoap 1.2
. The default value issoap 1.1
. TheXsoap 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"