Today I came across something I had not experienced earlier. We have a web application that in turn consumes a web service at some point when the user clicks some button and what happened today was that we had added a couple of new methods to the web service which meant that the web application needed to be rebuilt against the new WSDL in order for these new methods to be picked up so we could consume them from our application. Once the new methods were added to the web service it was promoted to the DEV environment.
So far all was good, we rebuilt the application, the new models were automatically generated using the wsimport plugin for Maven and there we had it, we could now consume the new methods from the application code base. Now without actually consuming these methods the application was promoted to the QA environment and this is were it all went wrong. Since the application was now built against the new web service which was available in DEV and the application was now running in QA pointing at the QA web service endpoint we ran into issues, the application was expecting the new methods and therefore it wouldn’t even instantiate the web service port and we were unable to consume the web service in QA. In order to resolve this we had to promote the web service to QA and world order was restored.
Lesson learnt, whilst working on a web service or several and also actively working on a client, make sure you do a synchronized promotion of these things into the various environments to avoid headaches. A positive thing that came out of this though was that were now able to avoid a potential go live mistake in another application which was running into the same issue but where the environment would be LIVE rather than QA.