因为都是国外的厂商,很少考虑,或者考虑不够中文问题,所以本文中会多次提到各个技术对中文的支持情况。文中所用wsdl标签基本都是中文标签。
Axis2生成的客户端有一大好处,生成的测试用例非常全。这是其它几个客户端生成难以比拟的。Ps: 生成测试用例需要指定参数-t。
axis2使用adb,ADB 是 Axis2 的数据绑定扩展。与其他数据绑定框架不同,ADB 代码仅可用于 Axis2 Web 服务。这个限制是 ADB 的一大局限,但也带来了一些好处。由于 ADB 与 Axis2 进行了集成,因此其代码可针对 Axis2 要求进行优化。
生成的字符编码是utf-8格式:
wsdl2java -u -t -o . -p com.ruler -uri http://192.168.1.101:8080/testmyeclipse/ruler?wsdl
如果url中包括con比如www.con.com那么会有文件无法生成,因为windows中不能建立con文件夹。
并且类型如
<xs:element name="回执要求">
<xs:annotation>
<xs:documentation>这里是回执</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string"/>
</xs:simpleType>
</xs:element>
会生成两个文件:回执要求.java、回执要求_type0.java,使用起来很不方便。
axis2使用xmlbeans, XMLBeans 是包含数据绑定层的通用 XML 处理框架。其源自一个 BEA Systems 项目,后来提交给了 Apache Foundation。
生成的文件格式未知:
wsdl2java -d xmlbeans -t -o . -p com.ruler -uri http://192.168.1.101:8080/testmyeclipse/ruler?wsdl
Exception in thread "main" org.apache.axis2.wsdl.codegen.CodeGenerationException
: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
估计是中文问题,没有成功。
axis2使用jaxb,jaxb是业界标准,axis2、xfire、sun都有提供支持。
生成的字符编码格式是gb2312:
wsdl2java -d jaxbri -t -o . -p com.ruler -uri http://192.168.1.101:8080/testmyeclipse/ruler?wsdl
sun使用netBeans6生成客户端,使用的是jaxb,生成的字符编码是gb2312编码的,但是netBeans6会用utf-8格式打开,出现乱码,netBeans6不能修改文件的打开格式,所以需要用外界工具修改,如ultraEdit打开(没有乱码),然后拷贝到netBeans6中:
wsimport -d D:/NetBeansProjects/WebApplication1/build/generated/wsimport/binaries -extension -keep -s D:/NetBeansProjects/WebApplication1/build/generated/wsimport/client -catalog D:/NetBeansProjects/WebApplication1/catalog.xml -verbose D:/NetBeansProjects/WebApplication1/src/conf/xml-resources/web-service-references/ruler/wsdl/192.168.1.101_8080/testmyeclipse/ruler.wsdl -p com.ruler -wsdllocation http://192.168.1.101:8080/testmyeclipse/ruler?wsdl
xfire生成客户端,生成的字符编码是gb2312格式。
参考文章:
Axis2 数据绑定:
http://www.ibm.com/developerworks/cn/webservices/ws-java3/index.html