wsimport 是根据JDK1.6.0_21及以上的生成本地代码的,它只能解析服务器端的SOAP协议为1.1,不能解析SOAP1.2的协议。如果解析SOAP1.2 将会解析不完全。
wsdl2java 可以支持SOAP1.1 和SOAP1.2的协议
!!!主要分析1.1与1.2的区别点,注意1.1的客户端方式可以兼容1.2的服务端。
默认情况下,Jdk1.6只支持soap1.1
目前WebService的协议主要有SOAP1.1和1.2。
看wsdl文件中,
如果有<soap:address标签的表示用的是soap1.1
如果有<soap12:address标签的表示用的是soap1.2
===================SOAP1.1和1.2的区别:===========================
SOAP1.1版本与SOAP1.2版本在头信息上存在差异。
SOAP1.1存在SOAPAction的请求头。
SOAP1.2没有SOAPAction的请求头。
基于SOAP1.1生成的WSDL和基于SOAP1.2生成的WSDL也不一样。
主要看命名空间。
在CXF中两种协议请求的方式也不一样。
1.1为content-Type:text/xm;charset=UTF-8
1.2为content-Type:application/soap+xml;charset=UTF-8
两者的命名空间不同。
命名空间:
Soap1.1的命名空间:
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
Soap1.2 命名空间:
xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"
SOAP1.1的HTTP请求头:
POST /xe_cxf2.4_soap12_spring_web/ws/helloworldsoap12?wsdl HTTP/1.1
Content-Type: text/xml; charset=UTF-8
Accept: **
User-Agent: Apache CXF 2.4.0
Cache-Control: no-cache
Pragma: no-cache
Host: localhost:6767
Connection: keep-alive
Content-Length: 214
SOAP1.2的请求头:
POST /xe_cxf2.4_soap12_spring_web/ws/helloworldsoap12?wsdl HTTP/1.1
Content-Type: application/soap+xml; charset=UTF-8
Accept: */*
User-Agent: Apache CXF 2.4.0
Cache-Control: no-cache
Pragma: no-cache
Host: localhost:6767
Connection: keep-alive
Content-Length: 214
SOAP1.1和1.2的WSDL文件的差别:
在定义Service部分差别如下:
lSoap1.1是以:soap:address定义。
lSoap1.2是以: soap12:address定义。-jdk1.6不支持12形式的访问
===================SOAP1.1和1.2的区别:===========================
请详细阅读该文章(比较全面的剖析webservice):
http://my.oschina.net/u/1425737/blog/217758
java开发webservice的服务端:
http://blog.sina.com.cn/s/blog_a0e7e34c0101959p.html
建议用jdk自带的wsimport的方式来进行客户端调用。
总结:
开发webservice服务端的方式(基于java语言):axis2、cxf、jdk自带方式
webservice客户端调用方式:jdk自带、axis2
推荐的方式:
开发webservice服务端:cxf(整合spring的方式)
webservice客户端调用:jdk自带的方式(至少jdk1.7。最低:JDK1.6.0_22)
还可以将webservice的客户端的生成代码,变为jar。将jar导入到需要调用webservice的工程里。这样会方便很多。
wsdl2java 可以支持SOAP1.1 和SOAP1.2的协议
!!!主要分析1.1与1.2的区别点,注意1.1的客户端方式可以兼容1.2的服务端。
默认情况下,Jdk1.6只支持soap1.1
目前WebService的协议主要有SOAP1.1和1.2。
看wsdl文件中,
如果有<soap:address标签的表示用的是soap1.1
如果有<soap12:address标签的表示用的是soap1.2
===================SOAP1.1和1.2的区别:===========================
SOAP1.1版本与SOAP1.2版本在头信息上存在差异。
SOAP1.1存在SOAPAction的请求头。
SOAP1.2没有SOAPAction的请求头。
基于SOAP1.1生成的WSDL和基于SOAP1.2生成的WSDL也不一样。
主要看命名空间。
在CXF中两种协议请求的方式也不一样。
1.1为content-Type:text/xm;charset=UTF-8
1.2为content-Type:application/soap+xml;charset=UTF-8
两者的命名空间不同。
命名空间:
Soap1.1的命名空间:
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
Soap1.2 命名空间:
xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"
SOAP1.1的HTTP请求头:
POST /xe_cxf2.4_soap12_spring_web/ws/helloworldsoap12?wsdl HTTP/1.1
Content-Type: text/xml; charset=UTF-8
Accept: **
User-Agent: Apache CXF 2.4.0
Cache-Control: no-cache
Pragma: no-cache
Host: localhost:6767
Connection: keep-alive
Content-Length: 214
SOAP1.2的请求头:
POST /xe_cxf2.4_soap12_spring_web/ws/helloworldsoap12?wsdl HTTP/1.1
Content-Type: application/soap+xml; charset=UTF-8
Accept: */*
User-Agent: Apache CXF 2.4.0
Cache-Control: no-cache
Pragma: no-cache
Host: localhost:6767
Connection: keep-alive
Content-Length: 214
SOAP1.1和1.2的WSDL文件的差别:
在定义Service部分差别如下:
lSoap1.1是以:soap:address定义。
lSoap1.2是以: soap12:address定义。-jdk1.6不支持12形式的访问
===================SOAP1.1和1.2的区别:===========================
请详细阅读该文章(比较全面的剖析webservice):
http://my.oschina.net/u/1425737/blog/217758
java开发webservice的服务端:
http://blog.sina.com.cn/s/blog_a0e7e34c0101959p.html
建议用jdk自带的wsimport的方式来进行客户端调用。
总结:
开发webservice服务端的方式(基于java语言):axis2、cxf、jdk自带方式
webservice客户端调用方式:jdk自带、axis2
推荐的方式:
开发webservice服务端:cxf(整合spring的方式)
webservice客户端调用:jdk自带的方式(至少jdk1.7。最低:JDK1.6.0_22)
还可以将webservice的客户端的生成代码,变为jar。将jar导入到需要调用webservice的工程里。这样会方便很多。