Do you know Wise?
Wise is a Java framework for easily invoking webservices, which can be used as base for zero-code webservice invocation applications. Wise can be the proper solution when total and effective client/server decoupling through WS is required.
While basic JAX-WS tool for wsdl-to-java generation (like wsconsume) are great for most Java developer usecases, the generated stub classes kind of introduce a new (or renewed :)) level of coupling very similar to Corba IDL; by generating statical webservice stubs you actually couple client and server.
So what is the alternative? Writing dynamic client using dynamic Provider/Dispatch JAX-WS API? That’s possibly an option, yet not the easiest to understand, implement and maintain in most enterprise environments. Wise provides a different solution using dynamic mapping on JAX-WS tools generated code. Wise allows calling a ws service by mapping a generic Object model to JAXWS generated code. This opens up multiple Wise usage scenarios, like zero-code WS invocation (used in JBoss ESB) or GUI driven WS invocation.
Wise project came from a code donation and is currently composed of the following components:
It is a library to simplify web service invocation from a client point of view: it aims at providing a near zero-code solution to find and parse wsdls, select service and endpoint and call operations mapping user defined object model to JAX-WS objects required to perform the call.
In a nutshell this is a web application designed to call a generic web-service given the wsdl only. Wise parses the wsdl and dynamically generates a web interface to call the service and read the result. It is designed to be used by non-programmer people (for example QA testers), but it is very useful also for developer since it is easy to use for rapid tests.