Hi, I need an advice in this case study. Here is a problem.
I have two instances of JBoss, running on two independent (hardware) host. So, kind a clustering. With difference that each Jboss instance serve to request, made by specified customers. So customer A need to be handled by JBoss A, and the customer B need to be handled by JBoss B.
Since, customer and JBoss instances communicate using SOAP (on each JBoss is installed particular web service).
So, I can do this by simply creating customers proxy, on two independent addresses, and then each customer will directly communicate with its service. But, what if I want to add 100 JBoss instances, where each instance handle appropriate customer, I need to again to make direct communication, between service/client.
What I want is a SINGLE ENTRY POINT for each customer. I want to have a one JBoss instance, which will serve only for REDIRECTION of customer A request, to the instance of the JBoss A (residing somewhere on the network). So if I later need to add another service (JBoss instance) to serve certain request from customer X, the customer's proxy will use the same classes.
May I somehow, put in the SOAP that, client application will sent SOAP to the entry Jboss instance, and then in that JBoss instance (handler service), to redirect a request to the appropriate Jboss instance (which is supposed to manage a requests from that client).
I know its a kind of confusing description, but any advice will be helpful.
(I believe that I can perform that maybe in the Apache HTTP configuration, but for any further adding of Jboss instance, to what potentially a requests should be sent, require that Apache HTTP server, to be restarted, which may result in a "missed request".
Thanks in advance
Perhaps this can help you: http://membrane-soa.org/soap-router.htm I haven't tried it myself, though. If you decided to give it a go, please share any experiences. Thanks in advance!
Joined: Sep 26, 2008
Hi Ivan, I am happy to see you, because I have one question, somehow related to this one (kind of implementation).
However, I wanted to perform sort of failover of web services, following your suggestion in you tutorial at page 86.
There you are discussing about <port> and <service> elements, of wsdl.
Two or more <port> elements may assigned different URL's, to the same binding, to perform load balancing and failover.
I have this situation :
If I try to use QuarkWSPort, and disable service at what is port bind, IT WON'T to be redirected to the second one QuarkWSPort_FailOver automatically.
The only way to perform kind of failover, is I make disabled main port is, to catch an exception when I try to invoke service on that port, and to implement method for failovering case, using QuarkWSPort_FailOver port, invoked when exception occurs.
Did you meant on 'this' kind of failover (load balancing), or some automatic ???
Thanks, I will inform community after I checked the article you point me to.
Joined: Oct 04, 2006
If you assign two different URLs to the same binding only means that you have two identical services at two different addresses. No automatic redirection or similar will take place using only this technique. You still have to facilitate the load balancing and/or failover in some way, for instance using a layer 4 switch.
Joined: Sep 26, 2008
As much as I saw, about membrane, it can be used as a dispatcher from the Apache HTTP server, to particular instance of Jboss.
I'll do little work about it...