Boy*_*ike 1 java axis web-services cxf wsimport
我正在尝试为http://v3.core.com.productserve.com/ProductServeService.wsdl定义的Web服务生成Java客户端
我已经从CXF和Axis2尝试过Java的wsimport和wsdl2java。
例如
wsimport -p productserve -XadditionalHeaders http://v3.core.com.productserve.com/ProductServeService.wsdl
Run Code Online (Sandbox Code Playgroud)
这三个都产生具有相同问题的ApiPortType.java。getProductList方法的返回类型为void,没有@WebResult批注。WSDL中的所有其他操作都映射为java代码。
我已经详细研究了WSDL,但无法发现问题所在以及为什么所有3种工具都无法为操作生成正确的返回类型。
有任何想法吗?
该Web服务属于文档文字打包的 Web服务的类别。以下几点是正确的:
因此,您有void回报,但实际上有4个结果:
Holder<List<Product>> oProductHolder<Integer> iTotalCountHolder<List<RefineByGroup>> oActiveRefineByGroupHolder<List<RefineByGroup>> oRefineByGroupCXF(使用wsimport)已生成WRAPPED操作样式。您还可以BARE使用CXF 生成样式:
wsdl2java -bareMethods http://v3.core.com.productserve.com/ProductServeService.wsdl
Run Code Online (Sandbox Code Playgroud)
这样,而不是:
@WebMethod
@RequestWrapper(localName = "getProductList", targetNamespace = "http://v3.core.com.productserve.com/", className = "productserve.GetProductList")
@ResponseWrapper(localName = "getProductListResponse", targetNamespace = "http://v3.core.com.productserve.com/", className = "productserve.GetProductListResponse")
public void getProductList(
...
Run Code Online (Sandbox Code Playgroud)
你会得到:
@WebResult(name = "getProductListResponse", targetNamespace = "http://v3.core.com.productserve.com/", partName = "return")
@WebMethod
public GetProductListResponse getProductList(
@WebParam(partName = "parameters", name = "getProductList", targetNamespace = "http://v3.core.com.productserve.com/")
GetProductList parameters
) throws ApiException;
Run Code Online (Sandbox Code Playgroud)