Version 7

    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}

    outputDirectoryThe output directory for generated artifacts.

    ${project.build.outputDirectory}

    or

    ${project.build.testOutputDirectory}

    resourceDirectoryThe output directory for resource artifacts (WSDL/XSD).${project.build.directory}/wsprovide/resources
    sourceDirectoryThe output directory for Java source.${project.build.directory}/wsprovide/java
    extensionEnable SOAP 1.2 binding extension.false
    generateWsdlWhether or not to generate WSDL.false
    verboseEnables more informational output about command progress.false
    endpointClassService 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
    forkWhether or not to run the generation task in a separate VM.true
    keepKeep/Enable Java source code generation.false
    destdirThe output directory for generated artifacts."output"
    resourcedestdirThe output directory for resource artifacts (WSDL/XSD).value of destdir
    sourcedestdirThe output directory for Java source.value of destdir
    extensionEnable SOAP 1.2 binding extension.false
    genwsdlWhether or not to generate WSDL.false
    verboseEnables more informational output about command progress.false
    seiService Endpoint Implementation.
    classpathThe 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>