SOAP Any Service

SOAP Any Service

SOAP Any Service a Service without a WSDL.
In the first instance it might sound a bit odd.. isn’t it ? when i first came across this my first reaction was what the heck…!!!
why the hell do you need it?
Well the answer is you are most likely to use it in an event when you either want to deal with some sort of legacy SOAP clients which were written without using a WSDL.

Another more important use of this will be when you want to route all the messages to a single SOAP port exposed for all incoming messages. All messages received by this single SOAP port can then be received, processed and routed to the relevant services which typically would be your business specific services. The good thing about it will be the calling party will not need to know the end points for these business specific services.

But on the same hand the problem is it will accept any SOAP request one will pass to it and hence you cannot validate the requests. So you need to be bit mindful to find a way to handle the request validations.
Another issue which you might encounter is not all systems can consume a proxy without a WSDL. a common example being the Oracle BPM. It’s something which is not supported in the version 10gR3 till date.

If you use this pattern, I would recommend using the Soap Any service as an external service and have all other services as internal services.

for more information on internal and external services refer to my previous post Internal and external services

4 Responses so far.

  1. Nits says:

    This is also called the Generic Proxy Pattern as Terry’s shown in this useful post @ http://javamaster.wordpress.com/2009/08/19/esb-design-pattern-generic-proxy-pattern/

  2. Johnson Philip says:

    Hi Nitin

    It is a great article. You have explained invoking the web service from obpm.

    I have a question on this, what is about the transaction managment by obpm in the case of invoking a web service? How can i rollback the transaction if the web service communication fails for whaever reason witin the obpm?

  3. Javagenious says:

    Thanks for the useful info