I am considering using EJB 3.0 with an Application Server (e.g. JBoss)
or Spring with a Web Server (e.g., Tomcat). In either case, I
plan to use Hibernate. What are the major pros and cons of each approach?
I think that Rod Johnson's advice to use EJB if you need distributed
objects (i.e. if you *really* need distributed objects and can justify
that need) and avoid it if you don't is broadly sensible. EJB3 has
improved things greatly, particularly with entity beans, but it still
might be a bit early to depend on it. The JBoss implementation is in beta
(beta 8 no less) and is buggy. The JBoss website has the following
disclaimer:
"NOTE: JBoss EJB3 is not a final implementation and it does not pass the
EJB3 Compatibility Test Suite."
My experience with JBoss + Hibernate + EJB 3.0 was OK until I hit a bug
that required an upgrade that quickly descended into a mess of seemingly
irreconcilable inter-dependencies.
Furthermore, Sun currently don't seem comfortable recommending their Java
EE 5 offering (Sun AS 9) over their J2EE 1.4 offering (Sun AS 8.2). BEA
WebLogic might be a better bet but it's not cheap.
You can use the Hibernate JPA EntityManager outside of an application
server, which might be the way to go. You still get to take advantage of
all of the entity annotations.
Dan.