`
xpenxpen
  • 浏览: 704093 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

使用wsimport或jaxws-maven-plugin生成web service代码

阅读更多
1.关于jax-ws web service client的代码生成,可以用JDK自带的wsimport。
我们可以写一个ant文件build.xml
<project default="save-wsdl">
	<property name="wsimport-path" value="C:/jdk1.6.0_33/bin/wsimport" />
	<property name="wsurl" value="http://localhost:8080/webservice-server/services" />
	<target name="wsimport">
		<exec executable="${wsimport-path}">
			<arg line="-keep -s ./src/main/java -p com.xpen.webservice.client
            ${wsurl}/MyService?wsdl" />
		</exec>
	</target>
	
	<target name="save-wsdl">
		<property name="wsdlfile" value="src/main/resources/wsdl/MyService.wsdl"/>
		<property name="xsdfile" value="src/main/resources/wsdl/MyService.xsd"/>
		<get src="${wsurl}/MyService?wsdl" dest="${wsdlfile}"/>
		<get src="${wsurl}/MyService?xsd=MyService_schema1.xsd" dest="${xsdfile}"/>
	</target>
</project>

如上代码,我们定义了一个wsimport目标,执行它就可以生成web service client java代码了。还有一个save-wsdl目标,是用来保存wsdl以及相关的xsd到本地用的(这个我们下面有用)。

如果只是想在编码时就生成那些自动代码,那以上步骤足够了。但有时候我们不想把这些自动生成的代码check到代码库里,那可以采用maven build的时候再去生成这些代码。

2.我们可以用jaxws-maven-plugin,官网在这里http://jax-ws-commons.java.net/jaxws-maven-plugin/,另外如果eclipse里用这个插件有问题,可以下载另一个m2e插件,https://github.com/trajano/jaxws-maven-connector。

下好以后,pom.xml加入如下代码
			<!-- jaxws Plugin -->
			<plugin>
				<groupId>org.jvnet.jax-ws-commons</groupId>
				<artifactId>jaxws-maven-plugin</artifactId>
				<version>2.1</version>
				<executions>
					<execution>
						<goals>
							<goal>wsimport</goal>
						</goals>
					</execution>
				</executions>
				<configuration>
					<packageName>com.xpen.webservice.client</packageName>
					<wsdlDirectory>src/main/resources/wsdl</wsdlDirectory>
					<wsdlFiles>
						<wsdlFile>MyService.wsdl</wsdlFile>
					</wsdlFiles>
					<bindingDirectory>src/main/resources/wsdl</bindingDirectory>
					<bindingFiles>
						<bindingFile>MyService.xsd</bindingFile>
					</bindingFiles>
				</configuration>
			</plugin>


OK啦,这样build时代码就自动生成了,生成的代码在target/generated-sources/wsimport下面。然后用eclipse导入existing maven project这些代码就自动加到build path里了。

需要注意的是,JDK6自带jaxb2.1,所以我们这里jaxws-maven-plugin版本也要用2.1,如果用2.2是过不去的,会报 UndeclaredThrowableException: javax.xml.bind.annotation.XmlElementRef.required()错误。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics