On Friday 07 May 2010 3:28:19 pm Jeffrey Knight wrote:
> I'm using CFX 2.2.7. I'm ok on on the CFX side.
> 
> It's really the XML Schema validation side that I'm struggling with,
> because this XML
> <ns:imageData>
> <inc:Include href="cid:143666242607"
> xmlns:inc="http://www.w3.org/2004/08/xop/include"/>
> </ns:imageData>

Well, I guess my point is that if you let CXF do the schema validation 
instead, it should be OK (assuming JAXB databinding).  I don't really know 
anything about the DataPower stuff to know if that's an option or not.   

Dan


> 
> just isn't valid for the XSD with that specifies
> <xs:element name="imageData" type="xs:base64Binary"
> xmime:expectedContentTypes="application/octet-stream"/> ...
> 
> We have DataPower in front of the server running CXF (on WebSphere)
> and the WSDL from that CFX uses needs to also reside on DataPower. So
> the problem is actually at the DataPower level, rather than CXF.
> Maybe there's an XML/XSD specific mailing list I can check with (or
> stackoverflow), but I'm sure this comes up in the context of CXF quite
> frequently.
> 
> -Jeff
> 
> On Fri, May 7, 2010 at 2:03 PM, Daniel Kulp <[email protected]> wrote:
> > What version of CXF?   I kind of hacked a workaround for this a little
> > while ago.   Recent versions of CXF should handle this automatically.
> > 
> > Dan
> > 
> > On Friday 07 May 2010 11:24:26 am Jeffrey Knight wrote:
> >> Hello
> >> 
> >> This is somewhat less of a CXF question and more a general MTOM/Base64
> >> XSD validation question.
> >> 
> >> I have an mtom-enabled cxf web service. The base64Binary portion of me
> >> XSD looks like this:
> >> 
> >> XSD:   ... <xs:element name="imageData" type="xs:base64Binary"
> >> xmime:expectedContentTypes="application/octet-stream"/> ...
> >> 
> >> In order to ensure MTOM works and incoming requests are validated
> >> against the XSD, I have my jaxws:endpoint properties configured with:
> >>   <entry key="mtom-enabled" value="true"/>
> >>   <entry key="schema-validation-enabled" value="true" />
> >> 
> >> The following XML request from a client is valid against the XSD above:
> >> 
> >> Soap Request XML: ...
> >> <ns:imageData>base-64-encoded-file-here</ns:imageData> ...
> >> 
> >> So far so good.
> >> 
> >> But when I enable MTOM in a client, it correctly adds the href/cid and
> >> sends: Soap Request XML:
> >>     ...
> >>    <ns:imageData>
> >>    <inc:Include href="cid:143666242607"
> >> xmlns:inc="http://www.w3.org/2004/08/xop/include"/>
> >>    </ns:imageData>
> >>    ...
> >> 
> >> This rightly fails XSD validation with:
> >>    Element 'imageData' must have no element
> >>    (or similarly just using XMLBeans to test validation:
> >> cvc-complex-type.2.4b: Element not allowed:
> >>    incl...@http://www.w3.org/2004/08/xop/include in element
> >> imaged...@urn://my.urn.here)
> >> 
> >> I'd like to have my XSD optionally allow MTOM "<inc:include.." piece,
> >> so clients can either send either base64 or MTOM (their choice) and
> >> have both pass XSD validation.
> >> 
> >> But if I try to define an child element of my <ns:imageData>, I run
> >> into the issue that it's "Illegal to define a nested type when a type
> >> attribute is specified".
> >> 
> >> If I disable XSD validation this all works. And I can hack around this
> >> with a custom jaxb-validation-event-handler that ignores this
> >> particular error, but I need a WSDL with valid XSD's for various ESB
> >> deployment reasons.
> >> 
> >> Has anyone run into this before? It's basically the same thing as
> >> described here:
> >> http://stackoverflow.com/questions/749784/wsdl-validation-error-when-usi
> >> ng- mtom
> >> 
> >> -Jeff
> > 
> > --
> > Daniel Kulp
> > [email protected]
> > http://dankulp.com/blog

-- 
Daniel Kulp
[email protected]
http://dankulp.com/blog

Reply via email to