The wsgen command-line tool generates the necessary portable artifacts
required for Java API for XML Web Services (JAX-WS) applications when starting
from Java code. This tool will generate a WSDL file only when requested.
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 portable artifacts.
The
wsgen tool accepts a properly annotated service endpoint implementation
using the @WebService annotation as input and generates the following portable
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.
Avoid trouble: The
wsgen command does not differentiate the
XML namespace between multiple XMLType annotations that have the same @XMLType
name defined within different Java packages. When this scenario occurs, the
following error is produced:
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.
gotcha
Syntax
The command line syntax is:
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>
- This is the same as -classpath <path>.
- -d <directory>
- Specifies where to place the generated output files.
- -extension
- Specifies whether to allow 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 in conjunction 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 will be output and normal command processing will not occur.
- -wsdl [:protocol]
- By default, wsgen does not generate a WSDL file. This optional
parameter causes wsgen to generate a WSDL file and is typically only
used to allow 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 can
only be used in conjunction with the -extension option.
- -servicename <name>
- This parameter is only used in conjunction with the -wsdl option.
Specifies a wsdl:service name to be generated in the WSDL
file. For example,
-servicename "{http://mynamespace/}MyService"
- -portname
- This parameter is only used in conjunction with the -wsdl option.
Specifies a wsdl:port name to be generated in the WSDL file.
For example,
-portname "{http://mynamespace/}MyPort"