Just to set the record straight, the J2EE specification *includes* EJB's, but does not dictate them (of course, that means a J2EE-compliant application server MUST provide them...). Unfortunately, all too often, J2EE gets blamed for the heaviness of EJB's. This is unfortunate, as EJB's are there for a reason (and a good one), but typically aren't necessary (even in many enterprise situations).

JSP's/servlets, JMS, JDBC, JavaMail, etc. are all part of the J2EE spec. And though JDO isn't, it can certainly handle most of the persistence requirements a project may have.

Dan