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

        

Reply via email to