cxf-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Daniel Kulp <dk...@apache.org>
Subject Re: Error generating CXF client for .Net WCF file upload service
Date Tue, 06 Nov 2012 17:09:42 GMT

Try removing the -validate flag from the command line.   There are some issues with the validation
with 2.7.0.   Actually, if you can, try the 2.7.1-SNAPSHOTs.   I hope the issues are fixed,
but it would be great if you could verify that.

Dan



On Nov 6, 2012, at 11:00 AM, Ryan <griggsrl@gmail.com> wrote:

> You're right Andrei, somehow some of the prefix declarations in my original
> message didn't make it. Oops. Here are my WSDL and XSDs again, hopefully
> with all of the info this time.
> 
> WSDL:
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <wsdl:definitions name="File"
>    targetNamespace="http://tempuri.org/"
>    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
>    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>    xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
>    xmlns:wsu="
> http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
> 
>    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
>    xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
>    xmlns:tns="http://tempuri.org/"
>    xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
>    xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex"
>    xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy"
>    xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"
>    xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract"
>    xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
>    xmlns:wsa10="http://www.w3.org/2005/08/addressing"
>    xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata">
>    <wsp:Policy wsu:Id="FileEndpoint_policy">
>        <wsp:ExactlyOne>
>            <wsp:All>
>                <wsoma:OptimizedMimeSerialization xmlns:wsoma="
> http://schemas.xmlsoap.org/ws/2004/09/policy/optimizedmimeserialization"/>
>            </wsp:All>
>        </wsp:ExactlyOne>
>    </wsp:Policy>
>    <wsdl:types>
>        <xsd:schema targetNamespace="http://tempuri.org/Imports">
>            <xsd:import schemaLocation="1.xsd" namespace="
> http://tempuri.org/"/>
>            <xsd:import schemaLocation="0.xsd" namespace="
> http://schemas.microsoft.com/Message"/>
>            <xsd:import schemaLocation="2.xsd" namespace="
> http://schemas.microsoft.com/2003/10/Serialization/"/>
>        </xsd:schema>
>    </wsdl:types>
>    <wsdl:message name="RemoteFile">
>        <wsdl:part name="parameters" element="tns:RemoteFile"/>
>    </wsdl:message>
>    <wsdl:message name="RemoteFile_Headers">
>        <wsdl:part name="FileName" element="tns:FileName"/>
>        <wsdl:part name="Length" element="tns:Length"/>
>    </wsdl:message>
>    <wsdl:message name="IFile_UploadFile_OutputMessage"/>
>    <wsdl:portType name="IFile">
>        <wsdl:operation name="UploadFile">
>            <wsdl:input wsaw:Action="http://tempuri.org/IFile/UploadFile"
> name="RemoteFile" message="tns:RemoteFile"/>
>            <wsdl:output wsaw:Action="
> http://tempuri.org/IFile/UploadFileResponse"
> message="tns:IFile_UploadFile_OutputMessage"/>
>        </wsdl:operation>
>    </wsdl:portType>
>    <wsdl:binding name="FileEndpoint" type="tns:IFile">
>        <wsp:PolicyReference URI="#FileEndpoint_policy"/>
>        <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
>        <wsdl:operation name="UploadFile">
>            <soap:operation soapAction="http://tempuri.org/IFile/UploadFile"
> style="document"/>
>            <wsdl:input name="RemoteFile">
>                <soap:header message="tns:RemoteFile_Headers"
> part="FileName" use="literal"/>
>                <soap:header message="tns:RemoteFile_Headers" part="Length"
> use="literal"/>
>                <soap:body use="literal"/>
>            </wsdl:input>
>            <wsdl:output>
>                <soap:body use="literal"/>
>            </wsdl:output>
>        </wsdl:operation>
>    </wsdl:binding>
>    <wsdl:service name="File">
>        <wsdl:port name="FileEndpoint" binding="tns:FileEndpoint">
>            <soap:address location="http://localhost:10186/File.svc"/>
>        </wsdl:port>
>    </wsdl:service>
> </wsdl:definitions>
> 
> XSD 0:
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <xs:schema elementFormDefault="qualified"
>    targetNamespace="http://schemas.microsoft.com/Message"
>    xmlns:xs="http://www.w3.org/2001/XMLSchema"
>    xmlns:tns="http://schemas.microsoft.com/Message">
>    <xs:simpleType name="StreamBody">
>        <xs:restriction base="xs:base64Binary"/>
>    </xs:simpleType>
> </xs:schema>
> 
> XSD 1:
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <xs:schema elementFormDefault="qualified"
>    targetNamespace="http://tempuri.org/"
>    xmlns:xs="http://www.w3.org/2001/XMLSchema"
>    xmlns:tns="http://tempuri.org/">
>    <xs:import schemaLocation="0.xsd" namespace="
> http://schemas.microsoft.com/Message"/>
>    <xs:element name="RemoteFile">
>        <xs:complexType>
>            <xs:sequence>
>                <xs:element name="FileByteStream" type="q1:StreamBody"
> xmlns:q1="http://schemas.microsoft.com/Message"/>
>            </xs:sequence>
>        </xs:complexType>
>    </xs:element>
>    <xs:element name="FileName" nillable="true" type="xs:string"/>
>    <xs:element name="Length" type="xs:long"/>
> </xs:schema>
> 
> XSD 2:
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <xs:schema attributeFormDefault="qualified"
>    elementFormDefault="qualified"
>    targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/"
>    xmlns:xs="http://www.w3.org/2001/XMLSchema"
>    xmlns:tns="http://schemas.microsoft.com/2003/10/Serialization/">
>    <xs:element name="anyType" nillable="true" type="xs:anyType"/>
>    <xs:element name="anyURI" nillable="true" type="xs:anyURI"/>
>    <xs:element name="base64Binary" nillable="true" type="xs:base64Binary"/>
>    <xs:element name="boolean" nillable="true" type="xs:boolean"/>
>    <xs:element name="byte" nillable="true" type="xs:byte"/>
>    <xs:element name="dateTime" nillable="true" type="xs:dateTime"/>
>    <xs:element name="decimal" nillable="true" type="xs:decimal"/>
>    <xs:element name="double" nillable="true" type="xs:double"/>
>    <xs:element name="float" nillable="true" type="xs:float"/>
>    <xs:element name="int" nillable="true" type="xs:int"/>
>    <xs:element name="long" nillable="true" type="xs:long"/>
>    <xs:element name="QName" nillable="true" type="xs:QName"/>
>    <xs:element name="short" nillable="true" type="xs:short"/>
>    <xs:element name="string" nillable="true" type="xs:string"/>
>    <xs:element name="unsignedByte" nillable="true" type="xs:unsignedByte"/>
>    <xs:element name="unsignedInt" nillable="true" type="xs:unsignedInt"/>
>    <xs:element name="unsignedLong" nillable="true" type="xs:unsignedLong"/>
>    <xs:element name="unsignedShort" nillable="true"
> type="xs:unsignedShort"/>
>    <xs:element name="char" nillable="true" type="tns:char"/>
>    <xs:simpleType name="char">
>        <xs:restriction base="xs:int"/>
>    </xs:simpleType>
>    <xs:element name="duration" nillable="true" type="tns:duration"/>
>    <xs:simpleType name="duration">
>        <xs:restriction base="xs:duration">
>            <xs:pattern
> value="\-?P(\d*D)?(T(\d*H)?(\d*M)?(\d*(\.\d*)?S)?)?"/>
>            <xs:minInclusive value="-P10675199DT2H48M5.4775808S"/>
>            <xs:maxInclusive value="P10675199DT2H48M5.4775807S"/>
>        </xs:restriction>
>    </xs:simpleType>
>    <xs:element name="guid" nillable="true" type="tns:guid"/>
>    <xs:simpleType name="guid">
>        <xs:restriction base="xs:string">
>            <xs:pattern
> value="[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}"/>
>        </xs:restriction>
>    </xs:simpleType>
>    <xs:attribute name="FactoryType" type="xs:QName"/>
>    <xs:attribute name="Id" type="xs:ID"/>
>    <xs:attribute name="Ref" type="xs:IDREF"/>
> </xs:schema>
> 
> I've downloaded the WSDL and the XSDs locally and validated it with no
> issues. I haven't have a chance to run wsdl2java directly against the local
> copies instead of from within Eclipse yet.
> 
> 
> On Mon, Nov 5, 2012 at 7:16 AM, Andrei Shakirin <ashakirin@talend.com>wrote:
> 
>> As far as I can see, "q1" namespace prefix is used, but not declared in
>> schema xsd=xsd1.
>> WSDL and schemas also miss number of prefixes declarations: wsdl; xs;
>> soap; wsp; wsu.
>> 
>> I suggest you to validate your WSDL with any tool: Eclipse, XMLSpy, etc.
>> 
>> Regards,
>> Andrei.
>> 
>> -----Original Message-----
>> From: Ryan [mailto:griggsrl@gmail.com]
>> Sent: Montag, 5. November 2012 04:47
>> To: users@cxf.apache.org
>> Subject: Error generating CXF client for .Net WCF file upload service
>> 
>> I'm having some issues generating a CXF client for a file upload service
>> in WCF and am hoping for some guidance. I've been troubleshooting from the
>> WCF side for a couple weeks with help from MSDN and Asp.Net forums and have
>> run out of ideas on that side at least for now.
>> 
>> The WSDLToJava command (from within Eclipse) and the exception I'm getting
>> is as follows:
>> 
>> wsdl2java -client -d C:\Users\Ryan\workspace\WcfProxy\.cxftmp/src
>> -classdir C:\Users\Ryan\workspace\WcfProxy\build\classes -p
>> http://tempuri.org/=org.tempuri -impl -validate -exsh false -dns true
>> -dex true -wsdlLocation http://localhost:10186/UploadFile.svc?wsdl
>> -verbose -defaultValues -fe jaxws -db jaxb -wv 1.1
>> http://localhost:10186/UploadFile.svc?wsdl
>> wsdl2java - Apache CXF 2.7.0
>> 
>> WSDLToJava Error: Schema Error : src-resolve: Cannot resolve the name
>> 'ns0:StreamBody' to a(n) 'type definition' component.
>> 
>> My WSDL is:
>> 
>> <?xml version="1.0" encoding="UTF-8"?><wsdl:definitions
>> name="UploadFile" targetNamespace="http://tempuri.org/"><wsp:Policy
>> wsu:Id="BasicHttpBinding_IUploadFile_policy">
>>    <wsp:ExactlyOne>
>>        <wsp:All>
>>            <wsoma:OptimizedMimeSerialization/>
>>        </wsp:All>
>>    </wsp:ExactlyOne></wsp:Policy><wsdl:types>
>>    <xsd:schema targetNamespace="http://tempuri.org/Imports">
>>        <xsd:import
>> schemaLocation="http://localhost:10186/UploadFile.svc?xsd=xsd1"
>> namespace="http://tempuri.org/"/>
>>        <xsd:import
>> schemaLocation="http://localhost:10186/UploadFile.svc?xsd=xsd0"
>> namespace="http://schemas.microsoft.com/Message"/>
>>        <xsd:import
>> schemaLocation="http://localhost:10186/UploadFile.svc?xsd=xsd2"
>> namespace="http://schemas.microsoft.com/2003/10/Serialization/"/>
>>    </xsd:schema></wsdl:types><wsdl:message name="RemoteFile">
>>    <wsdl:part name="parameters"
>> element="tns:RemoteFile"/></wsdl:message><wsdl:message
>> name="RemoteFile_Headers">
>>    <wsdl:part name="FileName" element="tns:FileName"/>
>>    <wsdl:part name="Length"
>> element="tns:Length"/></wsdl:message><wsdl:message
>> name="IUploadFile_DownloadFile_InputMessage"/><wsdl:portType
>> name="IUploadFile">
>>    <wsdl:operation name="UploadFile">
>>        <wsdl:input
>> wsaw:Action="http://tempuri.org/IUploadFile/UploadFile"
>> name="RemoteFile" message="tns:RemoteFile"/>
>>    </wsdl:operation>    </wsdl:portType><wsdl:binding
>> name="BasicHttpBinding_IUploadFile" type="tns:IUploadFile">
>>    <wsp:PolicyReference URI="#BasicHttpBinding_IUploadFile_policy"/>
>>    <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
>>    <wsdl:operation name="UploadFile">
>>        <soap:operation
>> soapAction="http://tempuri.org/IUploadFile/UploadFile"
>> style="document"/>
>>        <wsdl:input name="RemoteFile">
>>            <soap:header message="tns:RemoteFile_Headers"
>> part="FileName" use="literal"/>
>>            <soap:header message="tns:RemoteFile_Headers"
>> part="Length" use="literal"/>
>>            <soap:body use="literal"/>
>>        </wsdl:input>
>>    </wsdl:operation></wsdl:binding><wsdl:service name="UploadFile">
>>    <wsdl:port name="BasicHttpBinding_IUploadFile"
>> binding="tns:BasicHttpBinding_IUploadFile">
>>        <soap:address location="http://localhost:10186/UploadFile.svc"/>
>>    </wsdl:port></wsdl:service></wsdl:definitions>
>> 
>> My first thought was that there had to be a problem with the xsd:import
>> statements, so I followed those to see their content. Here's the schema at
>> "....=xsd1":
>> 
>> <xs:schema elementFormDefault="qualified" targetNamespace="
>> http://tempuri.org/">
>>  <xs:import schemaLocation="
>> http://localhost:10186/UploadFile.svc?xsd=xsd0"
>> namespace="http://schemas.microsoft.com/Message"/>
>>  <xs:element name="RemoteFile">
>>    <xs:complexType>
>>      <xs:sequence>
>>        <xs:element name="FileByteStream" type="q1:StreamBody"/>
>>      </xs:sequence>
>>    </xs:complexType>
>>  </xs:element>
>>  <xs:element name="FileName" nillable="true" type="xs:string"/>
>>  <xs:element name="Length" type="xs:long"/> </xs:schema>
>> 
>> And here's the schema that imports from "...=xsd0":
>> 
>> <xs:schema elementFormDefault="qualified"
>> targetNamespace="http://schemas.microsoft.com/Message">
>>  <xs:simpleType name="StreamBody">
>>    <xs:restriction base="xs:base64Binary"/>
>>  </xs:simpleType>
>> </xs:schema>
>> 
>> Now, I'm no WSDL expert, but it seems that everything in the WSDL and
>> imports matches up. I've created lots of .Net ASMX webservices (the
>> predecessor to WCF) that have interop'ed with Java clients (and vice versa)
>> just fine but this is the first attempt using WCF instead of ASMX. The
>> kicker is that .Net clients consume this service with no issue of course.
>> 
>> If anyone has some insight into this, I'd greatly appreciate another set
>> of eyes on this.
>> 
>> Thanks,
>> Ryan
>> 

-- 
Daniel Kulp
dkulp@apache.org - http://dankulp.com/blog
Talend Community Coder - http://coders.talend.com


Mime
View raw message