I'm starting work on a web application that will have around 300 users, where around 200 of those users will be using the application at any given time. In terms of scalability, am I at the point where EJBs make sense for this application in terms of scalability? The web application contains some heavy business logic and a lot of CRUD type data access behavior.
"I believe in coyotes and time as an abstract Explain the change the difference between What you want and what you need there's the key"
I work on the development and support of the web app that can have up to 40 concurrent users and more. This web app is build on J2EE - Servlets and EJB (both Session and Entity beans). Session beans are used for business logic (business facade) and Entity beans represent tables' records (entities). Our current task is to improve the performance. The biggest kill comes from the entity beans. We are trying to reconfigure the system so that the entity beans are used only to update the database record (however, at the end we might stop using altogether).
If I was in your situation I'd think on leveraging on EJB advantages such as transaction management etc. However, I'd only use session beans and Plain Old Java Objects.
Would be good to hear from other ranchers about their thoughts on this topic.
I am not convinced that you really need EJB for this application. Most standard web applications don't really need EJB. It is a common myth that EJBs are not for scalability and that is just not true. Applications built entirely on Servlets/JSP can be just as scalable as those making full use of the J2EE Stack.
For me there are really only three reasons to use EJB: 1) Remotability - Making distributed components with EJB is extremely, however this is a double-edged sword since most applictions should not be distributed. 2) Transaction Management - CMT is one of the best aspects of EJB. If your system makes heavy use of transactions (most don't) then EJB can be a compelling solution though there are others (see below). 3) Messaging - MDBs are a great convenience when creating message-based systems. I wouldn't want to write one without them.
For a full recap on my thoughts on EJB, read this article that I wrote for the JavaRanch Journal.
BTW, just because you may need some of the capabilities of EJB doesn't mean you actually need EJB. As an alternative, I suggest you checkout the Spring Framework, it provides many of the same services as EJB but without the need for an EJB Container. We were just discussing Spring over here if you are interested.