So asks this excellent summary of when you should use EJBs over at rebelutionary.
If your application doesn’t involve a lot of true distributed computing or require distributed transaction management, the odds are very good that there’s a better way to do it.
Using EJB often prohibits quick deployment to multiple application servers to compare true performance; servlet containers are actually much friendlier if you’re concerned about portability.
I’ll add in addition that EJB development is an order of magnitude more complex and developers with experience are harder to find and thus, much more expensive, then Servlet->JSP->Bean->Database development. I suggest using them only in the scenario described in the quote above.