Hi,
Apologies for a late reply, I was planning to reply for a while :-)
As far as approaches toward versioning SOAP services are concerned, see [1] which Oliver also referenced in the other email and
which is being used in production and also check [2] for some general information.
[3] captures some good advice on how to deal with versioing restful services,
some of it may apply to SOAP services too.
It is also may make sense to explicitly require or at least recommend the consumers to ignore unrecognized tags, provided that the
breaking change is signalled by a namespace change. It may let you avoid the 'noise' (frequent namespace change) when the schemas
get updated with the tags which don't affect the existing consumers, example, an element called "book" has a new element "category"
added which should not affect the consumers knowing about the book/name only. This is called a forward compatibility. See Versioning
in [4] for example (though Web3s is defunct now at least publicly).
Likewise, a service provider should typically ensure a backward compatibility, that is newer services should continue accept the
requests from older clients.
For the same reason (that is, to avoid the 'noise' but at the code level), I'd recommend just to have a single complex type in every
resource method signature on input/output. If the policy is to ensure the code gets changed even with a minor update then you can
'enforce' the failure at runtime by enabling the strict schema validation.
It much depends on what exactly you would like to achieve. In the end of the day you can always count on CXF :-) in that it offers a
numebr of options for having a single class servicing multiple clients, see [5] for some info. Example, you can use XML stream
readers/writers for both JAXRS and JAXRS services and utilize multiple jaxws: and jaxrs: endpoints referncing the same bean but
using different readers/writers or filters or (jaxb) provider instances, etc
hope it helps, Sergey
[1] http://blogs.iona.com/sos/20070410-WSDL-Versioning-Best-Practise.pdf
[2] http://www.w3.org/TR/2007/REC-wsdl20-primer-20070626/#adv-versioning
[3]
http://www.25hoursaday.com/weblog/2007/05/08/RESTWebPlatformsAndVersioning.aspx
[4] http://dev.live.com/livedata/web3s.htm#_Toc165288982
[5]
http://cwiki.apache.org/CXF20DOC/jax-rs.html#JAX-RS-CustomizingJAXBXMLandJSONinputandoutput
----- Original Message -----
From: "Pydipati, Karuna" <[email protected]>
To: <[email protected]>
Sent: Thursday, December 03, 2009 6:56 PM
Subject: Versioning of web services?
Is there any good strategies out there to do versioning of web services?
Does CXF recommends/supports any such versioning strategies? Is there
any difference in versioning between REST versus SOAP services? Also, if
I am doing a *dual* publishing (publishing SOAP and REST from same
interface methods), how to achieve versioning of SOAP/REST concurrently?
Any documentation on CXF site? Thanks in advance.
Regards
Karuna Pydipati
StubHub/eBay - Platform & Services
Phone: (415)222-8752
Email: [email protected] <mailto:[email protected]>