2016-05-04 103 views
0

我想從WSDL生成Web服務客戶端,我很安靜,因此無法找出錯誤。 我曾嘗試:從wsdl使用Apache CXF生成Web服務客戶端時出錯3

wsimport -keep path-to-wsdl 

這給了我這個錯誤:

C:\WINDOWS\system32>wsimport -keep E:\NIEsocketWork\sdl.wsdl 
parsing WSDL... 


[WARNING] src-resolve.4.2: Error resolving component 'tns:GetMerchantRateRequest'. It was detected that 'tns:GetMerchantRateRequest' is in namespace 'http://www.fexcodcc.com/DCC20071126', but components from this namespace are not referenceable from schema document 'file:/E:/NIEsocketWork/sdl.wsdl#types?schema1'. If this is the incorrect namespace, perhaps the prefix of 'tns:GetMerchantRateRequest' needs to be changed. If this is the correct namespace, then an appropriate 'import' tag should be added to 'file:/E:/NIEsocketWork/sdl.wsdl#types?schema1'. 
    line 20 of file:/E:/NIEsocketWork/sdl.wsdl#types?schema1 

[WARNING] src-resolve: Cannot resolve the name 'tns:GetMerchantRateRequest' to a(n) 'type definition' component. 
    line 20 of file:/E:/NIEsocketWork/sdl.wsdl#types?schema1 

[ERROR] undefined simple or complex type 'tns:GetMerchantRateRequest' 
    line 20 of file:/E:/NIEsocketWork/sdl.wsdl 

[ERROR] undefined simple or complex type 'tns:GetMerchantRateResponse' 
    line 26 of file:/E:/NIEsocketWork/sdl.wsdl 

[ERROR] undefined simple or complex type 'tns:GetCardRateRequest' 
    line 79 of file:/E:/NIEsocketWork/sdl.wsdl 

[ERROR] undefined simple or complex type 'tns:GetCardRateResponse' 
    line 85 of file:/E:/NIEsocketWork/sdl.wsdl 

Exception in thread "main" com.sun.tools.internal.ws.wscompile.AbortException 
     at com.sun.tools.internal.ws.processor.modeler.wsdl.JAXBModelBuilder.bind(JAXBModelBuilder.java:129) 
     at com.sun.tools.internal.ws.processor.modeler.wsdl.WSDLModeler.buildJAXBModel(WSDLModeler.java:2283) 
     at com.sun.tools.internal.ws.processor.modeler.wsdl.WSDLModeler.internalBuildModel(WSDLModeler.java:183) 
     at com.sun.tools.internal.ws.processor.modeler.wsdl.WSDLModeler.buildModel(WSDLModeler.java:126) 
     at com.sun.tools.internal.ws.wscompile.WsimportTool.buildWsdlModel(WsimportTool.java:429) 
     at com.sun.tools.internal.ws.wscompile.WsimportTool.run(WsimportTool.java:190) 
     at com.sun.tools.internal.ws.wscompile.WsimportTool.run(WsimportTool.java:168) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:483) 
     at com.sun.tools.internal.ws.Invoker.invoke(Invoker.java:159) 
     at com.sun.tools.internal.ws.WsImport.main(WsImport.java:42) 

我也試過的Apache CXF 3.1.1生成Eclipse中的Web服務客戶端,但得到這個錯誤:

Loading FrontEnd jaxws ... 
Loading DataBinding jaxb ... 
wsdl2java -client -d C:\Users\Hamza\GalileoWorkspace\NIDCCFexco\.cxftmp/src -classdir C:\Users\Hamza\GalileoWorkspace\NIDCCFexco\build\classes -p http://www.fexcodcc.com/DCC20071126=com.fexcodcc.dcc20071126 -impl -validate -exsh false -dns true -dex true -wsdlLocation file:///E:/NIEsocketWork/sdl.wsdl -verbose -defaultValues -fe jaxws -db jaxb -wv 1.1 file:/E:/NIEsocketWork/sdl.wsdl 
wsdl2java - Apache CXF 3.1.1 


WSDLToJava Error: 
Summary: Failures: 4, Warnings: 0 

<<< ERROR! 
Part <parameters> in Message <{http://www.fexcodcc.com/DCC20071126}GetMerchantRateOut> referenced Type <{http://www.fexcodcc.com/DCC20071126}GetMerchantRateResult> can not be found in the schemas 
Part <parameters> in Message <{http://www.fexcodcc.com/DCC20071126}GetCardRateOut> referenced Type <{http://www.fexcodcc.com/DCC20071126}GetCardRateResult> can not be found in the schemas 
Part <parameters> in Message <{http://www.fexcodcc.com/DCC20071126}GetCardRateIn> referenced Type <{http://www.fexcodcc.com/DCC20071126}GetCardRate> can not be found in the schemas 
Part <parameters> in Message <{http://www.fexcodcc.com/DCC20071126}GetMerchantRateIn> referenced Type <{http://www.fexcodcc.com/DCC20071126}GetMerchantRate> can not be found in the schemas 



org.apache.cxf.tools.common.ToolException: 
Summary: Failures: 4, Warnings: 0 

<<< ERROR! 
Part <parameters> in Message <{http://www.fexcodcc.com/DCC20071126}GetMerchantRateOut> referenced Type <{http://www.fexcodcc.com/DCC20071126}GetMerchantRateResult> can not be found in the schemas 
Part <parameters> in Message <{http://www.fexcodcc.com/DCC20071126}GetCardRateOut> referenced Type <{http://www.fexcodcc.com/DCC20071126}GetCardRateResult> can not be found in the schemas 
Part <parameters> in Message <{http://www.fexcodcc.com/DCC20071126}GetCardRateIn> referenced Type <{http://www.fexcodcc.com/DCC20071126}GetCardRate> can not be found in the schemas 
Part <parameters> in Message <{http://www.fexcodcc.com/DCC20071126}GetMerchantRateIn> referenced Type <{http://www.fexcodcc.com/DCC20071126}GetMerchantRate> can not be found in the schemas 


    at org.apache.cxf.tools.validator.internal.WSDL11Validator.isValid(WSDL11Validator.java:139) 
    at org.apache.cxf.tools.wsdlto.frontend.jaxws.wsdl11.JAXWSDefinitionBuilder.validate(JAXWSDefinitionBuilder.java:207) 
    at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.processWsdl(WSDLToJavaContainer.java:204) 
    at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:164) 
    at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:415) 
    at org.apache.cxf.tools.common.toolspec.ToolRunner.runTool(ToolRunner.java:103) 
    at org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:113) 
    at org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:86) 
    at org.apache.cxf.tools.wsdlto.WSDLToJava.main(WSDLToJava.java:184) 

我的WSDL文件是:

<?xml version="1.0" encoding="utf-8" ?> 

<wsdl:definitions targetNamespace="http://www.fexcodcc.com/DCC20071126" 
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" 
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" 
xmlns:tns="http://www.fexcodcc.com/DCC20071126" 
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
xmlns:wsi="http://ws-i.org/schemas/conformanceClaim/" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 

<wsdl:documentation>DCC Gateway (Provides functionality to make requests to the DCC for availability)</wsdl:documentation> 

<!-- Types --> <wsdl:types> 

<xsd:schema elementFormDefault="qualified" targetNamespace="http:// www.fexcodcc.com/DCC20071126" xmlns:dhs="urn:dhs"> 
<!-- Type definitions --> 
<xsd:element name="GetMerchantRate"> <xsd:complexType> 
<xsd:sequence> 
<xsd:element name="GetMerchantRateRequest" type="tns:GetMerchantRateRequest" minOccurs="1" maxOccurs="1"/> 

</xsd:sequence> </xsd:complexType> 
</xsd:element> 
<xsd:element name="GetMerchantRateResult"> <xsd:complexType> 
<xsd:sequence> 
<xsd:element name="GetMerchantRateResponse" type="tns:GetMerchantRateResponse" minOccurs="1" maxOccurs="1" /> 

</xsd:sequence> </xsd:complexType> 
</xsd:element> 
<!-- Complex type definitions --> 

<xsd:complexType name="GetMerchantRateResponse"> <xsd:sequence> 

<xsd:element name="ReferenceNumber" type="xsd:string" minOccurs="1" maxOccurs="1" /> 

<xsd:element name="ExchangeRate" type="xsd:string" minOccurs="0" maxOccurs="1" /> 

<xsd:element name="FgnCurCode" type="xsd:string" minOccurs="0" maxOccurs="1" /> 



<xsd:element name="FgnAmount" type="xsd:string" minOccurs="0" maxOccurs="1" /> 

<xsd:element name="DccOffered" type="xsd:string" minOccurs="0" maxOccurs="1" /> 

<xsd:element name="ValidHours" type="xsd:string" minOccurs="0" maxOccurs="1" /> 

<xsd:element name="MarginRatePercentage" type="xsd:string" minOccurs="0" maxOccurs="1" /> 

<xsd:element name="ExchangeRateSourcename" type="xsd:string" minOccurs="0" maxOccurs="1" /> 

<xsd:element name="CommissionPercentage" type="xsd:string" minOccurs="0" maxOccurs="1" /> 

<xsd:element name="ExchangerateSourceTimestamp" type="xsd:string" minOccurs="0" maxOccurs="1" /> 

<xsd:element name="MinorUnits" type="xsd:string" minOccurs="0" maxOccurs="1" /> 

<xsd:element name="ResponseCode" type="xsd:string" minOccurs="1" maxOccurs="1" /> 

</xsd:sequence> </xsd:complexType> 

<xsd:complexType name="GetMerchantRateRequest"> <xsd:sequence> 

<xsd:element name="ReferenceNumber" type="xsd:string" minOccurs="1" maxOccurs="1" /> 

<xsd:element name="MerchantId" type="xsd:string" minOccurs="1" maxOccurs="1" /> 

<xsd:element name="Acquirer" type="xsd:string" minOccurs="1" maxOccurs="1" /> 

<xsd:element name="FgnCurCode" type="xsd:string" minOccurs="1" maxOccurs="1" /> 

<xsd:element name="BaseAmount" type="xsd:string" minOccurs="0" maxOccurs="1" /> 

</xsd:sequence> </xsd:complexType> 

<xsd:element name="GetCardRate"> <xsd:complexType> 
<xsd:sequence> 

<xsd:element name="GetCardRateRequest" type="tns:GetCardRateRequest" minOccurs="1" maxOccurs="1" /> 

</xsd:sequence> </xsd:complexType> 
</xsd:element> 
<xsd:element name="GetCardRateResult"> <xsd:complexType> 
<xsd:sequence> 
<xsd:element name ="GetCardRateResponse" type="tns:GetCardRateResponse" minOccurs="1" maxOccurs="1" /> 

</xsd:sequence> </xsd:complexType> 
</xsd:element> 

<!-- Complex type definitions --> <xsd:complexType name="GetCardRateResponse"> 
<xsd:sequence> 
<xsd:element name="ReferenceNumber" type="xsd:string" minOccurs="1" maxOccurs="1" /> 

<xsd:element name="ExchangeRate" type="xsd:string" minOccurs="0" maxOccurs="1" /> 


<xsd:element name="FgnCurCode" type="xsd:string" minOccurs="0" maxOccurs="1" /> 

<xsd:element name="FgnAmount" type="xsd:string" minOccurs="0" maxOccurs="1" /> 

<xsd:element name="DccOffered" type="xsd:string" minOccurs="0" maxOccurs="1" /> 

<xsd:element name="ValidHours" type="xsd:string" minOccurs="0" maxOccurs="1" /> 

<xsd:element name="MarginRatePercentage" type="xsd:string" minOccurs="0" maxOccurs="1" /> 

<xsd:element name="ExchangeRateSourceName" type="xsd:string" minOccurs="0" maxOccurs="1" /> 

<xsd:element name="CommissionPercentage" type="xsd:string" minOccurs="0" maxOccurs="1" /> 

<xsd:element name="ExchangeRateSourceTimestamp" type="xsd:string" minOccurs="0" maxOccurs="1" /> 

<xsd:element name="MinorUnits" type="xsd:string" minOccurs="0" maxOccurs="1" /><xsd:element name="ResponseCode" type="xsd:string" minOccurs="1" maxOccurs="1" /> 

</xsd:sequence> </xsd:complexType> 

<xsd:complexType name="GetCardRateRequest"> <xsd:sequence> 

<xsd:element name="ReferenceNumber" type="xsd:string" minOccurs="1" maxOccurs="1" /> 

<xsd:element name="CardId" type="xsd:string" minOccurs="1" maxOccurs="1" /> 

<xsd:element name="MerchantId" type="xsd:string" minOccurs="1" maxOccurs="1" /> 

<xsd:element name="Acquirer" type="xsd:string" minOccurs="1" maxOccurs="1" /> 

<xsd:element name="BaseAmount" type="xsd:string" minOccurs="0" maxOccurs="1" /> 

</xsd:sequence> </xsd:complexType> 

</xsd:schema> </wsdl:types> 

<!-- Dhs Server Messages --> <wsdl:message name="GetMerchantRateIn"> 

<wsdl:part name="parameters" element="tns:GetMerchantRate" /> </wsdl:message> 
<wsdl:message name="GetMerchantRateOut"> 
<wsdl:part name="parameters" element="tns:GetMerchantRateResult" /> </wsdl:message> 
<wsdl:message name="GetCardRateIn"> 
<wsdl:part name="parameters" element="tns:GetCardRate" /> </wsdl:message> 
<wsdl:message name="GetCardRateOut"> 

<wsdl:part name="parameters" element="tns:GetCardRateResult" /> </wsdl:message> 
<!-- End of Dhs Server Messages --> 


<!-- Port types --> <wsdl:portType name="DHS"> 
<wsdl:operation name="getMerchantRate"> 

<wsdl:documentation>Get Exchange Rate for merchant</wsdl:documentation> <wsdl:input message="tns:GetMerchantRateIn" /> 

<wsdl:output message="tns:GetMerchantRateOut" /> </wsdl:operation> 
<wsdl:operation name="getCardRate"> 
<wsdl:documentation>Get Dynamic Currency conversion</wsdl:documentation> <wsdl:input message="tns:GetCardRateIn" /> 

<wsdl:output message="tns:GetCardRateOut" /> </wsdl:operation> 

<!-- End of Dhs Server Operations --> </wsdl:portType> 

<!-- WSDL bindings --> 

<wsdl:binding name="DHS12" type="tns:DHS"> <wsdl:documentation> 

<wsi:Claim conformsTo="http://ws-i.org/profiles/basic/1.1" /> </wsdl:documentation> 

<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" /> 
<wsdl:operation name="getMerchantRate"> 
<soap12:operation soapAction="http://www.fexcodcc.com/DCC20071126/ getMerchantRate" style="document" /> 
<wsdl:input> 
<soap12:body use="literal" /> </wsdl:input> 
<wsdl:output> 
<soap12:body use="literal" /> </wsdl:output> 
</wsdl:operation> 
<wsdl:operation name="getCardRate"> 

<soap12:operation soapAction="http://www.fexcodcc.com/DCC20071126/ getCardRate" style="document" /> 
<wsdl:input> 
<soap12:body use="literal" /> </wsdl:input> 
<wsdl:output> 
<soap12:body use="literal" /> </wsdl:output> 

</wsdl:operation> </wsdl:binding> 
<!-- WSDL service --> 

<wsdl:service name="DHS"> 

<wsdl:documentation> DHS Server(Provides functionality to make DCC availability requests)</wsdl:documentation> 
<wsdl:port name="DHS12" binding="tns:DHS12"> 

<soap12:address location="dhstest2.fexcodccapps.com/axis2/services/DHS" /> 
</wsdl:port> 

</wsdl:service> 
</wsdl:definitions> 

請幫我找出任何方式的錯誤,不管是wsimport還是apache cxf。我會很感激。

+0

您的wsdl不正確,我嘗試使用xmlspy進行驗證,當您嘗試使用wsdl2java時,出現與您一樣的錯誤。這不是一個cxf/wsdl2java問題,你只需修復你的wsdl。 – soilworker

+0

@soilworker btw什麼是jax ws和jaxb綁定文件,這些是什麼或我是否必須綁定任何文件?這不是我的來自第三方的WSDL。 – Talib

回答

相關問題