6 Replies Latest reply on Apr 17, 2008 6:13 AM by Tom Fennelly

    Webservices keeping in line with Asynchronous Design Princip

    Chuck Pearce Newbie


      We are currently experimenting with the ESB, we have deployed several services so far, using mainly JMS as the transport, and trying to keep the design of services asynchronous using EIPs. Keeping our design async is easy when our clients communicate with queues, because the services can simply deliver responses to the proper response queues, without having to maintain some type of connection 'state'. However, we now want to add a webservice gateway to the bus, using the jsr181 type methods, and I am having trouble understanding how I could keep this asynchronous. I have looked at the webserices_bpel quickstart, but the client in that case seems to be a bpel process, instead of a 'normal' client invoker that doesn't have inherent wait states.

      Let's say for example I have this use case:

      Client makes a call on the ESB Webservice Gateway, that expects a return value, I would then like to route the message through several services in the bus, asynchronously, (currently I do this with a dynamic router), and then be able to respond to the original caller (webservice client).

      I am not sure how I can implement the gateway such that it can 'push a message out', and then receive a message that is able to respond back over the same client channel that made the request.


      Client (ESB Unaware)
      | ^
      v |
      ESB Webservice Gateway <--------------
      (Gateway Service)
      |---> (Random Service 1) ---> (Random Service 2)

      (Imagine a line going from (Random Service 2) to ESB Webservice Gateway)

      I am able to do the routing and such just fine, just not sure how I can reply back to the gateway and have it maintain the connection with the client.