使用wsimport生成客户端Web服务代码时的空类

时间:2013-10-16 22:43:26

标签: java wsdl jax-ws wsimport

我正在使用 wsimport 来生成客户端Web服务代码。 (参见下面wsdl代码的一部分)。

完成代码生成后,我得到没有定义方法的空TokenRequest类。 另一方面,TokenResponse类定义了几个方法,几个setter和几个getter。

鉴于下面的WSDL,为什么我的TokenRequest类为空?

我希望它有4个用于ClientKey,Password,UserKey和UserName的setter方法。 现在,我无法设置这些参数并将它们传递给接收此TokenRequest对象的主Login方法。

我尝试在.NET 4.0中创建对此Web服务的引用,一切都运行完美。 TokenRequest类的构造函数接收了我需要的4个参数。

知道出了什么问题吗?明天我会尝试使用Axis2来做这件事......

   <?xml version="1.0" encoding="utf-8"?>
    ...
                <wsdl:input name="TokenRequest">
                    **<soap12:header message="i0:TokenRequest_Headers" part="ClientKey" use="literal"/>
                    <soap12:header message="i0:TokenRequest_Headers" part="Password" use="literal"/>
                    <soap12:header message="i0:TokenRequest_Headers" part="UserKey" use="literal"/>
                    <soap12:header message="i0:TokenRequest_Headers" part="UserName" use="literal"/>
                    <soap12:body use="literal"/>**
                </wsdl:input>
                <wsdl:output name="TokenResponse">
                    <soap12:body use="literal"/>
                </wsdl:output>
     ...

1 个答案:

答案 0 :(得分:1)

此章节“4.1.4。将其他WSDL标头映射到link的方法参数”将解释为什么wsimport不会生成您想要的soap标头属性。 4.1.4节中有一条说明“自JAX-WS RI 2.1.3起,wsimport有一个新选项-XadditionalHeaders,此选项会将这些附加标题映射为方法参数。”。因此,您应该查看库(Metro,Axis,CXF,......)的文档,看看它们是否具有此功能。