Better support for backward compatiability (by default)
-------------------------------------------------------
Key: CXF-4114
URL: https://issues.apache.org/jira/browse/CXF-4114
Project: CXF
Issue Type: Improvement
Components: Core
Affects Versions: 2.5.2, 2.4.6, 2.3.9
Reporter: Rouble
Fix For: 2.4.7, 2.5.3
Consider the situation where a CXF Web Service is released with a certain set
of operations and input/output data beans. Lets call this Web service version
1.0. Third parties write CXF clients against the CXF Web Service version 1.0
we'll call these 1.0 CXF clients.
Now, in the next release of the CXF Web Service (say 1.1), one attribute in one
input data bean is removed from the web service. This is widely considered to
be backwards compatible operation.
Any 1.0 CXF clients, will still send that field when communicating with a 1.1
CXF web service - and the web service will throw an unmarshallexception. A
seemingly innocuous action of removing an attribute from an input data bean
causes the service to stop working for older clients.
Now, there is a workaround in CXF today. By setting
set-jaxb-validation-event-handler to false, you can avoid the JAXB validation
checks. This is done as follows:
<jaxws:endpoint id="foo_v1_0"
address="/v1_0//foo"
implementor="com.example.fooImpl">
<jaxws:properties>
<entry key="set-jaxb-validation-event-handler" value="false" />
</jaxws:properties>
</jaxws:endpoint>
However, this turns off *all* JAXB validation. That is not desirable for
services. The services should not have to choose between backwards
compatibility and disabling all JAXB validation.
So, this enhancement is requesting for a new property, something like
"set-jaxb-ignore-additional-fields" - which only ignored additional fields and
does not require services to disable all JAXB validation.
Further, this enhancement is requesting that the default for this property be
"true" - so that by default a CXF web service will ignore additional fields in
a SOAP request. This enhancement will take CXF one step closer to supporting
backwards compatibility out of the box - and thus make it more developer
friendly.
Lastly, but importantly, this requirement also applies to clients. In our
example, if the CXF Web Service version 1.1 added a field to an output data
bean, then any 1.0 CXF clients should (by default) not throw an unmarshal
exception.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira