Hi
On 12/03/14 11:42, Diana ALLAM wrote:
It seems that in cxf, (I am working on 2.7.10 version), the 
jaxbValidationEventHandler is active for SOAP only and not for RESTful, is it 
right?
I concluded this because when I forced to use JAXElement for unmarshalling in 
RESTful, my service can avoid unexpected elements without any exception.
While in SOAP, I suppose that by default, all my classes are unmarshalled as 
JAXBElement, (because I don't have any JAXB annotation in my classes),
but I still have to set the JAXB validation handler to false in order to avoid 
the thrown exception.
You can use that property with CXF JAXBDataBinding if you prefer, in scope of working with JAX-RS endpoints (using the delegating DataBindingProvider or the data binding property).

If you bypass it and work directly with JAX-RS JAXB-aware providers (JAXBElementProvider, JSONProvider) and force JAXBElement reading then then you need to set ValidationEventHandler directly on them. The actual schema validation can be enforced separately too

Cheers, Sergey

Am I right?

Kind regards,

Diana



On 12 mars 2014, at 12:16, Sergey Beryozkin wrote:

The code shows that if this property is enabled then JAXB 
ValidationEventHandler implementation is set...

Cheers. Sergey
On 11/03/14 16:31, Diana ALLAM wrote:
Thank you for your reply.
I have a last question please.
Could I have more implementation details about 
"set-jaxb-validation-event-handler", which is used in the beans.xml file in 
jaxws;properties?
I know that JAXB allows adding handlers to marshaller, unmarshaller or 
validator.
Does the "set-jaxb-validation-event-handler" correspond to a particular cxf 
Handler? If yes, which is exactly please?
I have the cxf source code, and I see that "set-jaxb-validation-event-handler" 
is used in DataReaderImpl, but it's difficult to get how it works.

Regards,
Diana



On 11 mars 2014, at 16:45, Sergey Beryozkin wrote:

You can use StaxTransformFeature to drop unexpected elements (such as 
Description) or XSLTTransformFeature, follow the links at the end of

http://cxf.apache.org/docs/featureslist.html

Cheers, Sergey


On 11/03/14 13:23, allam-di14 wrote:
I have the following operation op provided by a server:
void op(A a)

Such that A has two attributes "key" and "value".

I would like to invoke this operation using the following payload:
Payload:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";>
        <soap:Body>
                <ns3:op xmlns:ns2="http://test/"; xmlns:ns3="http://server/";>
                        <arg0>
                                <key>1</key>
                                <value>Diana</value>
                                <description>PHD</description>
                        </arg0>
                </ns3:op>
        </soap:Body>
</soap:Envelope>

This payload has an additional element "description", at unmarshalling, the
following exception is thrown:
org.apache.cxf.interceptor.Fault: Unmarshalling Error: unexpected element
(uri:"", local:"description"). Expected elements are <{}value>,<{}key>
        at
org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:881)
        at
org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:702)
...

This exception is due to JAXB validation Event Handler.
I can get rid of it with the following spring configuration :
<jaxws:properties>
        <entry key="schema-validation-enabled" value="false" />       
        <entry key="set-jaxb-validation-event-handler" value="false" />
</jaxws:properties>

But disabling the JAXB validator is not a good thing.
I would like to do it better by unmarshalling my payload as JAXBElement,
because it will ignore the additional XML elements.

Regards,
Diana




--
View this message in context: 
http://cxf.547215.n5.nabble.com/XmlRootElement-with-jax-rs-jax-ws-tp566400p5741094.html
Sent from the cxf-user mailing list archive at Nabble.com.



--
Sergey Beryozkin

Talend Community Coders
http://coders.talend.com/

Blog: http://sberyozkin.blogspot.com




--
Sergey Beryozkin

Talend Community Coders
http://coders.talend.com/

Blog: http://sberyozkin.blogspot.com


Reply via email to