How does the efficiency of a commercial EJB container (Weblogic and the like) compare to that of an open-source container such as JBoss? What guidelines should one follow (aside from cost) to choose one over the other?
Performance testing for EJB containers is not an easy task. There are some benchmark tests out there, but they are not particularly thorough nor, in my opinion, are they adaquate to make platform decisions. Generally, it will depend on your application. Each server will prioritize some aspects of performance over others.
Fortunately, EJBs are fairly portable, so there should be nothing stopping you from testing your app, or some part of it, on multiple servers. Some issues that will come when measuring performance are:
- Will you need real-time accuracy in your database or can you do caching in your beans? How configurable is the container's support for caching?
- Is your application going to need failover capability. This is critical when examing open-source or cheaper commercial containers because most do not support clustering. Even among the higher end servers, clustering provides a very diverse collection of features -- some support failover for stateless components while others will cluster stateful.
- Does the server offer in-process access to EJBs from other EJBs and from Servlets? This is particularly important if you are developing a full Servlet/JSP app.
Other issues are:
- What third party tool integration is available for RAD and for debugging, testing and profiling?
- How much, if any, support are you going to need for your product?
- What addition J2EE functionality do you need? What version of the spec do you wish to code to?