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