I am an architect building Call Center on WLS 5.1 (We are in processes of migrating to WLS 6.1). Currently we are debating using RMI across the ocean (India to USA). We are entertaining having a topology as follows webserver (along with web container leveraging STRUTS). So in essence calling the EJB across the ocean. There are two thought processes one to use the RMI the other to make use of webservices. The concern we have is that we are not convinced that RMI would peform on a WAN setting though we know it does fine on LAN. Any thoughts? Does anyone have experience with RMI over the WAN? Pros/Cons. We have a very agressive perfomnace requirment of 3 sec over the ocean
Ed Roman you must have some view on this one ...
I guess it depends what kind of remote calls you are making. RMI/IIOP seems Ok if Course grained method calls in statefless session beans is used and Webservices is a better choice if integrating different systems or anticipating to do so in the future.
The get high performance in EJB you need to keep that in mid in every step of your design. I would have a concern for statefull session beans, but not sateless it sacles will.
Also use local interfaces in your entity beans and session facedes for clints to access the services. There a lot of things you can do to improve performance, read the best practice in EJB at javasoft.
I guess it depends what kind of remote calls you are making, RMI/IIOP seems Ok if course grained stateless session beans method calls is used and Webservices is a better choice if integrating different systems or anticipating to do so in the future.
To high hig performance services and mitigat potential risks consider it early in your design and write a demo to test your requiremnts. I would have a concern for statefull session beans, but not sateless it sacles well.
Also use local interfaces in your entity beans and session facades to access the entity beans(if the two are colocated). There a lot of things you can do to improve performance, read the best practice in EJB at javasoft.
Thanks for quick response and the tips. However I was interested of what are the issue in RMI over WAN. MY understanding is that RMI is optimized over the LAN not WAN. I do understand that before invoking the Remote interface methods you need to Lookup with JNDI to locate the home interface and create it thus 3 roundtrips at 800 ms. THat 2.4 sec write of there. Now if I can reduce the roundtrips by caching the HI and placing the LDAP on the LAN then I would to incure only 800 ms thus a better chance at hitting the 3 sec strict perfomance requirment. Is this possible have tried this before? Or should I forget RMI and do SOAP based strategy?
Incidentaly what is the JDJ list email address? Can you please forward to the list ...
There is no way I can tell if RMI could meet your requiremnt, because there a lot of other factors besides LAN/WAN(ex: remote method arguments, type of connection, host server, etc..). But as you said if you use a local LDAP and cache the remote object stubs and use ServiceLocator to get the stubs it should be fast. If that is faster than SOAP? I beleive it is. By the way I have a little experience in Web services/SOAP and I think SOAP is not for speed but integration and openess, but seek another opinion with some one who is well tuned in SOAP( not too many people are!)
Using course grained calls via RMI chould work reasonably well here. You *could* always reimplement RMI in a more efficient manner for this (it was developed with LAN's in mind), but I suspect reimplementing it may well be a bit out of scope.
I don't have much experience with web services (yet) but if you are looking int othat route I highly recommend looking at Apache Axis ( xml.apache.org ) as it makes Java web services almost absurdly simple to implement.