The webservices contract-first is, i think, a good concept. But how it actually should be executed is really complicated…
in my opinion it is writing the wsdl by hand and then generate the server and clients form it. So the contract is clear. On the otherhand it is also possible to write the server stubs (in eg. java) first, and then generate the wsdl out of it and define this as contract first. The big benefit of the second method is, that noone needs to be able to write the dm wsdl xmls… but is this really contract first?
The big other issue on webservice is the sharing of the wsdl itself… if you have a handwritten wsdl it is easy to share it… but where? But remember the generated server and its generated new wsdl does not need to be exactly the same…
at work we have a seperate service-contract maven project, which puts the wsdl on a seperate server on install. the idea then is then to get the wsdl with cxf and generate the server and clients. Good idea, nobody uses it 🙁
So a different solution should be found…