wsprovide is a command line tool and ant task that generates portable JAX-WS artifacts for a service endpoint implementation. It also has the option to "provide" the abstract contract for offline usage. See "Using wsprovide" for a detailed walk-through.
Command Line Tool
The command line tool has the following usage:
usage: wsprovide [options] <endpoint class name> options: -h, --help Show this help message -k, --keep Keep/Generate Java source -w, --wsdl Enable WSDL file generation -c. --classpath=<path< The classpath that contains the endpoint -o, --output=<directory> The directory to put generated artifacts -r, --resource=<directory> The directory to put resource artifacts -s, --source=<directory> The directory to put Java source -e, --extension Enable SOAP 1.2 binding extension -q, --quiet Be somewhat more quiet -t, --show-traces Show full exception stack traces
Examples
Generating wrapper classes for portable artifacts in the "generated" directory:
wsprovide -o generated foo.Endpoint
Generating wrapper classes and WSDL in the "generated" directory
wsprovide -o generated -w foo.Endpoint
Using an endpoint that references other jars
wsprovide -o generated -c application1.jar:application2.jar foo.Endpoint
Maven Plugin
The wsprovide tools is included in the org.jboss.ws.plugins:maven-jaxws-tools-plugin plugin. The plugin has two goals for running the tool, wsprovide and wsprovide-test, which basically do the same during different maven build phases (the former triggers the sources generation during process-classes phase, the latter during the process-test-classes one).
The wsprovide plugin has the following parameters:
Attribute | Description | Default |
---|---|---|
testClasspathElements | Each classpathElement provides a library file to be added to classpath | ${project.compileClasspathElements} or ${project.testClasspathElements} |
outputDirectory | The output directory for generated artifacts. | ${project.build.outputDirectory} or ${project.build.testOutputDirectory} |
resourceDirectory | The output directory for resource artifacts (WSDL/XSD). | ${project.build.directory}/wsprovide/resources |
sourceDirectory | The output directory for Java source. | ${project.build.directory}/wsprovide/java |
extension | Enable SOAP 1.2 binding extension. | false |
generateWsdl | Whether or not to generate WSDL. | false |
verbose | Enables more informational output about command progress. | false |
endpointClass | Service Endpoint Implementation. |
Examples
You can use wsprovide 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 provide the wsdl file and artifact sources for the specified endpoint class:
<build> <plugins> <plugin> <groupId>org.jboss.ws.plugins</groupId> <artifactId>maven-jaxws-tools-plugin</artifactId> <version>1.1.0.GA</version> <configuration> <verbose>true</verbose> <endpointClass>org.jboss.test.ws.plugins.tools.wsprovide.TestEndpoint</endpointClass> <generateWsdl>true</generateWsdl> </configuration> <executions> <execution> <goals> <goal>wsprovide</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
The following example does the same, but is meant for use in your own testsuite:
<build> <plugins> <plugin> <groupId>org.jboss.ws.plugins</groupId> <artifactId>maven-jaxws-tools-plugin</artifactId> <version>1.1.0.GA</version> <configuration> <verbose>true</verbose> <endpointClass>org.jboss.test.ws.plugins.tools.wsprovide.TestEndpoint2</endpointClass> <generateWsdl>true</generateWsdl> </configuration> <executions> <execution> <goals> <goal>wsprovide-test</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
Ant Task
Note
With 2.0.GA the task was renamed to org.jboss.wsf.spi.tools.ant.WSProvideTask
Note
With 4.0.GA the task was renamed to org.jboss.ws.tools.ant.WSProvideTask
The wsprovide 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 |
destdir | The output directory for generated artifacts. | "output" |
resourcedestdir | The output directory for resource artifacts (WSDL/XSD). | value of destdir |
sourcedestdir | The output directory for Java source. | value of destdir |
extension | Enable SOAP 1.2 binding extension. | false |
genwsdl | Whether or not to generate WSDL. | false |
verbose | Enables more informational output about command progress. | false |
sei | Service Endpoint Implementation. | |
classpath | The classpath that contains the service endpoint implementation. | "." |
Examples
Executing wsprovide in verbose mode with separate output directories for source, resources, and classes:
<target name="test-wsproivde" depends="init"> <taskdef name="wsprovide" classname="org.jboss.ws.tools.ant.WSProvideTask"> <classpath refid="core.classpath"/> </taskdef> <wsprovide fork="false" keep="true" destdir="out" resourcedestdir="out-resource" sourcedestdir="out-source" genwsdl="true" verbose="true" sei="org.jboss.test.ws.jaxws.jsr181.soapbinding.DocWrappedServiceImpl"> <classpath> <pathelement path="${tests.output.dir}/classes"/> </classpath> </wsprovide> </target>
Comments