Posted on 2012-05-22 14:00
為自己代言 閱讀(2621)
評論(0) 編輯 收藏
org.apache.cxf.binding.soap.SoapFault: "http://schemas.xmlsoap.org/wsdl/" is not a valid SOAP version.
在寫好服務器端測試沒有問題,在客戶端調用時候出現上面錯誤,經過分析原面如下:
1:CXF 有兩種客戶端調用,一種是動態工廠形式, 第二種是通過CXF 中wsdl2java 命令先把客戶端類生成到本地,在調用;
第一種: 1: 用org.apache.cxf.jaxws.JaxWsProxyFactoryBean配置
<bean id="msgWebServiceSoap" class="com.jd.sms.MsgWebServiceSoap" factory-bean="msgClientFactory"
factory-method="create"/>
<bean id="msgClientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
<property name="serviceClass" value="com.jd.sms.MsgWebServiceSoap"/>
<property name="address" value=" </bean>
第二種: 2:
用標簽<jaxws:client直接配置:
<jaxws:client id="orderClient" serviceClass=
"demo.order.OrderProcess" address=
"http://localhost:8080/orderapp/OrderProcess" />
以上兩種webService 的接口地址都不需要在后面加上?wsdl這個后綴,因為這樣spring 調用時候要先通過 CXF/bin 命令行wsdl2java 這個命令生成本地客戶端調用,把生成的本地客戶端代碼復制到客戶端工程中去,在spring 配置文件中通過上面的任意一種配置方式選擇配置,即可調用。
以上CXF異常,就是用這種方式調用,但是接口URL 多了?wsdl后綴的原面;
附wsdl2java 使用方式cd CXF/bin目錄下:
其作用上面的build.xml作用一樣。
附加:wsdl2java用法:
wsdl2java -p com -d src -all aa.wsdl
-p 指定其wsdl的命名空間,也就是要生成代碼的包名:
-d 指定要產生代碼所在目錄
-client 生成客戶端測試web service的代碼
-server 生成服務器啟動web service的代碼
-impl 生成web service的實現代碼
-ant 生成build.xml文件