I would like to know if the following scenario is possible using JBoss ESB.
I want to setup a number of systems (a cluster, perhaps?) with essentially the same set of services configured. An those services accessible as web services to components outside of JBoss ESB.
I imagine that for external clients which are not JBoss ESB aware and simply want to access a web service, an external load balancer would be required. Is this a correct assumption?
Are your services stateless?
For JBoss ESB aware clients, is it possible to have JBoss ESB route the messages to services based on the load on a particular server?
Not yet with all transports, but that kind of approach would be possible if you used JBoss Messaging as a transport.
Is it possible to manage individual services while the application server is running, for example, starting new services or stopping services? In this case, will ESB still route requests appropriately?
Yes, you can start and stop services. No, the ESB won't route requests automatically as yet, but you could write a rule in CBR that would.
Considering UDDI integration, if I do have multiple services listed on different machines, would JBoss ESB list them all on UDDI, or would I need to list only one instance of a service at one IP address and use the load balancer to pick the actual host? Does the UDDI implementation within JBoss ESB support replication yet? Can I run UDDI on every host serving the same data?
I'll let Kurt, our resident jUDDI guru answer. But you can register more than one service.
Finally, when running WS-BPEL, it is possible to use UDDI to select the instance of a service that you want to run? If so, is there any way to get UDDI to provide responses based on the load of the hosts in a cluster, so less loaded hosts would be given in responses from UDDI?
Tom F., who did the BPEL integration, can probably answer.
I realize that these are somewhat obscure questions, but I believe that for ESB to be truly "enterprise", availability and load balancing concerns need to be considered.
As well as other things ;-)
Considering UDDI integration, if I do have multiple services listed on different machines, would JBoss ESB list them all on UDDI, or would I need to list only one instance of a service at one IP address and use the load balancer to pick the actual host?
Let's say you have mutlitple services on different machine all listening to the same bus (let's say the same JMS Queue). Now you will end up with mulitple EPR entries in the UDDI, but in fact the EPRs are duplicates, and whichever service successfully takes the message off the queue will service the request. However, for protocols like http you do end upo with different EPRs and you will need load balancer right now. Before 4.2 goes final we will probably add somekind of round robin EPR assignment.
Does the UDDI implementation within JBoss ESB support replication yet? Can I run UDDI on every host serving the same data?
jUDDI only supports v2 at the moment, which means no replication. Note however, that even if UDDI v3 is supported this may not be a feature that will be implemented. Database are very good at doing replication, so why not leave it up to them?
Can I run UDDI on every host serving the same data?
Sure just point them to the same database, or point scout (JAXR) to access one central UDDI (over ws, or rmi).
We're planning on adding a quickstart to illustrate some of what Kurt's discussed. It should be in the GA release.
i doing now thw same senario that you wanted to realize. can you give me please some helpful information about?
thanks in advance