Exams Attended

Mock Exams

Make Homepage

Bookmark this page

Subscribe Email Address

Difference between EJB 3.0 and Spring

EJB 3.0Spring
Dependency Injection: Can inject anything in the container including EJBs, data sources, JMS resources and JPA resources.Dependency Injection: Can inject almost anything including lists, maps, properties and JNDI resources.
Transaction management: Works right out of the box, but only JTA is supported.Transaction management: Have to configure it to make it work, but supports a number of strategies including JTA, JDBC and Hibernate.
Persistence: Tightly integrated through JPA.Persistence: Framework support for JPA, Hibernate, JDBC, iBatis.
State management: Robust support through Stateful Session Beans and Extended Persistence Context.State management: Indirect support dependent on web container session management.
Web Services: Seamless support for JAX-WS 2.0Web Services: Poor direct support, best integration available is via configuring XFire for registered beans.
Messaging: Supported out of the box through Message Driven Beans.Messaging: Need to add configuration for message listeners. However, JMSTemplate adds nice abstraction over JMS.
AOP: Simple but limited support through interceptors.AOP: Robust support through AspectJ and Spring AOP alliance.
Security: Integrated support for declarative and programmatic security through JAAS.Security: Must add and configure Acegi security. However, support beyond JAAS is possible through Acegi.
Scheduling: Simple scheduling possible through EJB Timer service.Scheduling: Must add and configure Quartz for scheduling.
Remoting: Integrated support through Session Bean remote interfaces. Supports distributed transactions and security.Remoting: Remoting support may be added via configuration. Remote transactions and security are not supported. However protocols other than RMI such as Hessian and Burlap are supported.
Use EJB 3 If:
- You like annotation and dislike a lot of XML configuration.
- You prefer a tightly integrated solution stack that makes sensible default choices for you and minimizes configuration.
- Your application is very stateful.
- Standardization is an important consideration.
- You use JSF and are considering using Seam.
Use Spring if:
- Your application requires fine-grained control at the container level.
- Your application requires a lot of configuration beyond gluing together components and resources.
- You need advance AOP feathers.
Is it helpful? Yes No

Get differences from below

©2021 WithoutBook