从WSDL生成一个JAX-WS Webservice客户端JAR
本文强调了创建WS客户端JAR文件的一些隐藏的和重要的配置步骤。
●看起来生成一个JAR文件来消费一个JAX-WS Webservice是相当容易的。但如果你不注
意以下几点,它可能会突然变成你的噩梦。
●所以在这篇文章中,我将尝试强调一些隐藏的、重要的配置步骤,以创建一个WS客户
端JAR文件。
●首先,你应该注意你的项目使用的是哪个Java版本(Java 6,Java 7,还是Java 8)。
如果你的Java项目依赖于Java 6,然后如果你用Java 7或Java 8创建一个客户端,那么你会得到一个UnsupportedClassVersionError错误。
●创建一个临时目录:(/home/ahmet/tmp)。
●在临时文件夹中创建一个名为target的目录:(/home/ahmet/tmp/target)。
●保存你的wsdl到tmp目录:(/home/ahmet/temp/service.wsdl)。
●编辑你的wsdl文件,将URL从真正的Webservice地址改为localhost,然后保存并关
闭wsdl文件。
●在临时文件夹中创建一个名为META-INF的目录:
(/home/ahmet/tmp/target/META-INF)。
●把你的wsdl也放到META-INF文件夹中:
(/home/ahmet/tmp/target/META-INF/service.wsdl)。
创建一个名为l的文件,内容如下。
1.<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog"prefer="s
ystem">
2.<system systemId="localhost/wsdl/service.wsdl"uri="service
.wsdl"/>如何生成webservice客户端
3.</catalog>
●同时,把这个文件放到META-INF文件夹中:
(/home/ahmet/tmp/target/l)。
●创建一个名为l的文件,内容如下。
1.<?xml version="1.0"encoding="UTF-8"?>
2.<jaxb:bindings xmlns:jaxb="java.sun/xml/ns/jaxb"xmlns:xjc=
"java.sun/xml/ns/jaxb/xjc"jaxb:version="2.1">
3.<jaxb:globalBindings>
4.<xjc:serializable uid="1"/>
5.</jaxb:globalBindings>
6.</jaxb:bindings>
●把这个文件放到tmp文件夹里(/home/ahmet/l)。
●wsimport在某些地方将小写字符大写,导致代码中出现一些奇怪的字符。
●请确保你在tmp文件夹中,运行以下命令(/home/ahmet/tmp)。
wsimport -d target -keep -p PACKAGENAME -l -wsdllocat ion localhost/wsdl/service.wsdl -l service. wsdl
●改变你的工作目录到目标(/home/ahmet/tmp/target),并运行以下命令。
jar cvf service.jar .
●你的Jar文件已经可以使用了 :)