# `wsgen`

## `wsgen` Overview

The `wsgen` tool generates JAX-WS portable artifacts used in JAX-WS web services. The tool reads a web service endpoint class and generates all the required artifacts for web service deployment, and invocation. &jax-ws.product.name; also provides a .

## Launching `wsgen`

- Solaris/Linux

  -     &jax-ws.home;/bin/wsgen.sh -help

- Windows

  -     &jax-ws.home;\bin\wsgen.bat -help

## `wsgen` Syntax

`wsgen` OPTION SEI

The following table lists the `wsgen` options:

Option | Description
--- | ---
`-classpath <path>` | Specify where to find input class files.
`-cp <path>` | Same as `-classpath <path>`.
`-d <directory>` | Specify where to place generated output files.
`-extension` | Allow vendor extensions (functionality not specified by the specification). Use of extensions may result in applications that are not portable or may not interoperate with other implementations.
`-help` | Display help.
`-J<javacOption>` | Pass this option to Javac compiler. Note: use '=' instead of space as a delimiter between option name and its value.
`-keep` | Keep generated files.
`-r <directory>` | Used only in conjunction with the -`wsdl` option. Specify where to place generated resource files such as WSDLs.
`-s <directory>` | Specify where to place generated source files.
`-encoding <encoding>` | Set the encoding name for generated sources, such as EUC-JP or UTF-8. If `-encoding` is not specified, the platform default encoding is used.
`-verbose` | Output messages about what the compiler is doing.
`-version` | Print version information. Use of this option will ONLY print version information. Normal processing will not occur.
`-fullversion` | Print full version information. Use of this option will ONLY print version information. Normal processing will not occur.
`-wsdl[:protocol]` | By default `wsgen` does not generate a WSDL file. This flag is optional and will cause `wsgen` to generate a WSDL file and is usually only used so that the developer can look at the WSDL before the endpoint is deploy. The `protocol` is optional and is used to specify what protocol should be used in the `wsdl:binding`. Valid protocols include: `soap1.1` and `Xsoap1.2`. The default is `soap1.1`. `Xsoap1.2` is not standard and can only be used in conjunction with the `-extension` option.
`-servicename <name>` | Used only in conjunction with the `-wsdl` option. Used to specify a particular `wsdl:service` name to be generated in the WSDL. Example:
    -servicename "{http://mynamespace/}MyService"
`-portname <name>` | Used only in conjunction with the `-wsdl` option. Used to specify a particular `wsdl:port` name to be generated in the WSDL. Example:
    -portname "{http://mynamespace/}MyPort"
`-inlineSchemas` | Used to inline schemas in a generated wsdl. Must be used in conjunction with the `-wsdl` option.
`-x <path>` | Used to specify xml descriptor to be used. If there are more such files, the option must be used before each of those.
`-Xnocompile` | Do not compile generated Java files.

## `wsgen` Example

    wsgen -d stock -cp myclasspath stock.StockService

This will generate the wrapper classes needed for `StockService` annotated with `@WebService` annotation inside the `stock` directory.

    wsgen -wsdl -d stock -cp myclasspath stock.StockService

This will generate a SOAP 1.1 WSDL and schema for your Java class `stock.StockService` annotated with `@WebService` annotation.

    wsgen -wsdl:Xsoap1.2 -d stock -cp myclasspath stock.StockService

Will generate a SOAP 1.2 WSDL.

You don't have to generate WSDL at the development time as JAX-WS runtime will automatically generate a WSDL for you when you deploy your service.