我需要在Eclipse IDE中生成客户端代理Java文件。

我试图通过wsimport命令生成此文件。以下是我使用的命令。

wsimport -keep -b bindings.xml -p com.aasc.carrier.shipexec.proxy -implServiceName wcfSoxContract -implPortName wcfShip http://shipexec.com/demo/wcf/soap?wsdl -B-XautoNameResolution

执行此后,我得到下面的问题。

[错误]无效的操作“ InstantiateWCF”,无法生成Java方法参数。全局元素“ {......} InstantiateWCF”中包装子项“ package”的本地名称是一个Java关键字。使用自定义更改参数名。
  http://shipexec.com/demo/wcf/soap?wsdl=wsdl0的第1行

我尝试使用以下自定义绑定xml文件解决此问题。

<?xml version="1.0" encoding="UTF-8"?>
<jaxws:bindings xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
                xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
                wsdlLocation="http://shipexec.com/demo/wcf/soap?wsdl">
  <enableWrapperStyle>false</enableWrapperStyle>
  <jaxws:bindings node="wsdl:definitions/wsdl:import/wsdl:portType[@name='IwcfShip']/wsdl:operation[@name='InstantiateWCF']">
    <jaxws:parameter part="wsdl:definitions/wsdl:message[@name='IwcfShip_InstantiateWCF_InputMessage']/wsdl:part[@name='parameters']" childElementName="package" name="paramPackage" />
  </jaxws:bindings>
</jaxws:bindings>


但是我尝试获取的节点无法识别。

谁能帮忙找到确切的节点路径,以更改“ InstantiateWCF”操作的参数名称。

谢谢,
Y Pradeep

最佳答案

我已通过将binding.xml文件更改为以下内容解决了此问题。

<?xml version="1.0" encoding="UTF-8"?>
<jaxws:bindings xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
    wsdlLocation="http://shipexec.com/demo/wcf/soap?wsdl=wsdl0">
    <jaxws:bindings node="wsdl:definitions" >
        <jaxws:bindings node="//wsdl:portType[@name='IwcfShip']/wsdl:operation[@name='InstantiateWCF']">
             <jaxws:parameter part="wsdl:definitions/wsdl:message[@name='IwcfShip_InstantiateWCF_InputMessage']/wsdl:part[@name='parameters']" childElementName="tns:package" name="paramPackage" />
        </jaxws:bindings>
    </jaxws:bindings>
</jaxws:bindings>


并且还修改了wsimport命令,如下所示。

wsimport -keep -p com.aasc.carrier.shipexec.proxy -implServiceName wcfSoxContract -implPortName wcfShip http://shipexec.com/demo/wcf/soap?wsdl -B-XautoNameResolution -b bindings.xml

谢谢,
Y Pradeep

10-08 18:11