JBoss.orgCommunity Documentation
wsconsume is a command line tool and ant task that "consumes" the abstract contract (WSDL file) and produces portable JAX-WS service and client artifacts. For a more detailed overview, see "Using wsconsume".
The command line tool has the following usage:
usage: wsconsume [options] <wsdl-url> options: -h, --help Show this help message -b, --binding=<file> One or more JAX-WS or JAXB binding files -k, --keep Keep/Generate Java source -c --catalog=<file> Oasis XML Catalog file for entity resolution -p --package=<name> The target package for generated source -w --wsdlLocation=<loc> Value to use for @WebServiceClient.wsdlLocation -o, --output=<directory> The directory to put generated artifacts -s, --source=<directory> The directory to put Java source -t, --target=<2.0|2.1|2.2> The JAX-WS specification target -q, --quiet Be somewhat more quiet -v, --verbose Show full exception stack traces -l, --load-consumer Load the consumer and exit (debug utility) -e, --extension Enable SOAP 1.2 binding extension -a, --additionalHeaders Enables processing of implicit SOAP headers
Note : The wsdlLocation is used when creating the Service to be used by clients and will be added to the @WebServiceClient annotation, for an endpoint implementation based on the generated service endpoint interface you will need to manually add the wsdlLocation to the @WebService annotation on your web service implementation and not the service endpoint interface.
Generate artifacts in Java class form only:
wsconsume Example.wsdl
Generate source and class files:
wsconsume -k Example.wsdl
Generate source and class files in a custom directory:
wsconsume -k -o custom Example.wsdl
Generate source and class files in the org.foo package:
wsconsume -k -p org.foo Example.wsdl
Generate source and class files using multiple binding files:
wsconsume -k -b wsdl-binding.xml -b schema1-binding.xml -b schema2-binding.xml
The wsconsume tools is included in the org.jboss.ws.plugins:maven-jaxws-tools-plugin plugin. The plugin has two goals for running the tool, wsconsume and wsconsume-test, which basically do the same during different maven build phases (the former triggers the sources generation during generate-sources phase, the latter during the generate-test-sources one).
The wsconsume plugin has the following parameters:
Attribute | Description | Default |
---|---|---|
bindingFiles | JAXWS or JAXB binding file | true |
classpathElements | Each classpathElement provides a library file to be added to classpath | ${project.compileClasspathElements} or ${project.testClasspathElements} |
catalog | Oasis XML Catalog file for entity resolution | none |
targetPackage | The target Java package for generated code. | generated |
bindingFiles | One or more JAX-WS or JAXB binding file | none |
wsdlLocation | Value to use for @WebServiceClient.wsdlLocation | generated |
outputDirectory | The output directory for generated artifacts. | ${project.build.outputDirectory} or ${project.build.testOutputDirectory} |
sourceDirectory | The output directory for Java source. | ${project.build.directory}/wsconsume/java |
verbose | Enables more informational output about command progress. | false |
wsdls | The WSDL files or URLs to consume | n/a |
extension | Enable SOAP 1.2 binding extension. | false |
You can use wsconsume in your own project build simply referencing the maven-jaxws-tools-plugin in the configured plugins in your pom.xml file.
The following example makes the plugin consume the test.wsdl file and generate SEI and wrappers' java sources. The generated sources are then compiled together with the other project classes.
<build> <plugins> <plugin> <groupId>org.jboss.ws.plugins</groupId> <artifactId>maven-jaxws-tools-plugin</artifactId> <version>1.0.0.GA</version> <configuration> <wsdls> <wsdl>${basedir}/test.wsdl</wsdl> </wsdls> </configuration> <executions> <execution> <goals> <goal>wsconsume</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
You can also specify multiple wsdl files, as well as force the target package, enable SOAP 1.2 binding and turn the tool's verbose mode on:
<build> <plugins> <plugin> <groupId>org.jboss.ws.plugins</groupId> <artifactId>maven-jaxws-tools-plugin</artifactId> <version>1.0.0.GA</version> <configuration> <wsdls> <wsdl>${basedir}/test.wsdl</wsdl> <wsdl>${basedir}/test2.wsdl</wsdl> </wsdls> <targetPackage>foo.bar</targetPackage> <extension>true</extension> <verbose>true</verbose> </configuration> <executions> <execution> <goals> <goal>wsconsume</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
Finally, if the wsconsume invocation is required for consuming a wsdl to be used in your testsuite only, you might want to use the wsconsume-test goal as follows:
<build> <plugins> <plugin> <groupId>org.jboss.ws.plugins</groupId> <artifactId>maven-jaxws-tools-plugin</artifactId> <version>1.0.0.GA</version> <configuration> <wsdls> <wsdl>${basedir}/test.wsdl</wsdl> </wsdls> </configuration> <executions> <execution> <goals> <goal>wsconsume-test</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
Note
With 2.0.GA the task was renamed to org.jboss.wsf.spi.tools.ant.WSConsumeTask. Also put streamBuffer.jar and stax-ex.jar in the classpath of the ant task to generate the appropriate artefacts. Both jar files are in the jbossws lib directory. For jbossws-native-2.0.3.GA these files are not automatically installed if you run jboss-deployXX.
The wsconsume ant task has the following attributes:
Attribute | Description | Default |
---|---|---|
fork | Whether or not to run the generation task in a separate VM. | true |
keep | Keep/Enable Java source code generation. | false |
catalog | Oasis XML Catalog file for entity resolution | none |
package | The target Java package for generated code. | generated |
binding | A JAX-WS or JAXB binding file | none |
wsdlLocation | Value to use for @WebServiceClient.wsdlLocation | generated |
destdir | The output directory for generated artifacts. | "output" |
sourcedestdir | The output directory for Java source. | value of destdir |
target | The JAX-WS specification target. Allowed values are 2.0, 2.1 and 2.2 | |
verbose | Enables more informational output about command progress. | false |
wsdl | The WSDL file or URL | n/a |
extension | Enable SOAP 1.2 binding extension. | false |
additionalHeaders | Enables processing of implicit SOAP headers | false |
Note : The wsdlLocation is used when creating the Service to be used by clients and will be added to the @WebServiceClient annotation, for an endpoint implementation based on the generated service endpoint interface you will need to manually add the wsdlLocation to the @WebService annotation on your web service implementation and not the service endpoint interface.
Also, the following nested elements are supported:
Element | Description | Default |
---|---|---|
binding | A JAXWS or JAXB binding file | none |
jvmarg | Allows setting of custom jvm arguments |
Generate JAX-WS source and classes in a separate JVM with separate directories, a custom wsdl location attribute, and a list of binding files from foo.wsdl:
<wsconsume fork="true" verbose="true" destdir="output" sourcedestdir="gen-src" keep="true" wsdllocation="handEdited.wsdl" wsdl="foo.wsdl"> <binding dir="binding-files" includes="*.xml" excludes="bad.xml"/> </wsconsume>