1.從Bean生成ws,要注意如果用了XmlBeansServiceFactory,則生成Service要用接口,而不能用實現類,不然調用的時候會拋:
org.codehaus.xfire.fault.XFireFault: Parameter {http://www.eshore.com/moa}testin0 does not exist!
2.XmlBeansServiceFactory和ObjectServiceFactory生成的wsdl是不一樣的,因爲調用所使用的SOAP參數名也不一樣,因此客戶端和服務
端生成Service所使用的Factory應該統一
3.如果想根據wsdl生成基於xmlbean的stub,則wsdl需要經過xmlbean工具生成schema的jar包,生成stub需要到此包,不然會出錯:
E:\sylilzy\documents\project\sws\build.xml:27: java.lang.NullPointerException
這一點在文檔中重點提到:file:///E:/sylilzy/baksily/extract/xfire-1.2.6/manual/Client%20and%20Server%20Stub%20Generation%
20from%20WSDL.html
另外,在這個文檔中也有說明:file:///E:/sylilzy/baksily/extract/xfire-1.2.6/manual/XMLBeans%20Client%20Generation.html
4.用xfire通過WSDL生成客戶端和服務端stub時,如果使用 binding="xmlbeans",則服務端運行後的wsdl有問題:
<xsd:element name="servicein0" type="ns1:MOAReq" />
<xsd:element name="serviceout" type="ns1:MOAResp" />
這兩個元素不存在
另外,客戶端也無法調用原wsdl的服務,提示沒有合適的方法,用wireshark抓包後發現客戶端發出的soap請求中根本沒有參數信息.所以
說,通過WSDL的binding="xmlbeans"生成的客戶端和服務端都是有問題的,這一點在文檔中已經
warn:file:///E:/sylilzy/baksily/extract/xfire-1.2.6/manual/XMLBeans%20Client%20Generation.html
而通過ServiceClass的方式生成的沒問題:file:///E:/sylilzy/baksily/extract/xfire-1.2.6/manual/XMLBeans%20Integration.html