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
