xfire生成webservice客户端与服务注意事项

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

你可能感兴趣的:(html,bean,xml,webservice,SOAP)