I'm developing a client application of a WebService and I have the corresponding WSDL file inside a jar.
I'm using ant to generate the java code from the wsdl with the following build.xml:
<project name="wsimport" default="wsimport" basedir=".">
<taskdef name="wsimport" classname="com.sun.tools.ws.ant.WsImport" />
<target name="wsimport">
<echo message="Starting wsimport"/>
<mkdir dir="target/generated-sources/jaxws-wsimport"/>
<wsimport
wsdl="???"
sourcedestdir="target/generated-sources/jaxws-wsimport"
extension="true"
verbose="true"
target="2.0"
xn开发者_C百科ocompile="true"
catalog="src/jax-ws-catalog.xml"
wsdlLocation="/MyWebService/MyWebServiceV1_0?wsdl">
<binding dir="src/main/resources/bindings/v1_0" includes="*.xml"/>
<xjcarg value="-XhashCode"/>
<xjcarg value="-Xequals"/>
<xjcarg value="-XtoString"/>
</wsimport>
</target>
</project>
How do I load the WSDL file from a jar? The WSDL references an XSD which is also in the same jar.
Answering to my own question, the approach I used was to extract the files from the jar.
Actually I use maven to build the project and the antrun plugin to generate the sources from the wsdl, so I used the maven-dependency-plugin to unpack the files from the jar:
<!-- extract WSDL and XSD from dependency jar -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>unpack</id>
<phase>generate-sources</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>my.company</groupId>
<artifactId>my.artifact</artifactId>
<version>1.0</version>
<outputDirectory>${project.build.directory}/wsdl</outputDirectory>
<includes>**\/*.xsd, **\/*.wsdl</includes>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
精彩评论