views:

2517

answers:

2

I am sorry in advance if my question sounds too generic - I am doing all preliminary research myself but nothing substitutes real experience...

My goal is to port a legacy JEE application (pre-EJB 3.x) to Tomcat with embedded EJB container. My choices currently stand as follows:

  • JBoss Embeddable EJB
  • Apache OpenEJB
  • OW2 Consortium EasyBeans
  • anything else?

I am expecting to use JMS (with MDBs), Session beans (stateful and stateless), JPA and I am really excited about using JSF with Seam.

Now, given choices above, are there any advantages in using one or another embedded EJB provider?

+2  A: 

Below are results of my own homework - hopefully someone finds this analysis of embedded EJB providers helpful on deciding if and which container to use.

I went with Apache OpenEJB since it offers rich set of features, partially supports EJB 3.1 and seems as the most active and well rounded-up offering.

As usual, which product should work best for you really depends on your actual requirements, goals, and environment.

Embedded JBoss

  • License: LGPL
  • Java: JDK 5.0
  • Tomcat integration: Yes, modification to server.xml
  • Tomcat Versions: 5.0 and above (?)
  • Deployment to Tomcat: Embedded war
  • List of features: JNDI (local), JBoss TS, JBoss Messaging, JCA, JNDI, EJB, JPA, local TX datasource/connection pool, EJB Security JNDI configuration: overrides Tomcat's JNDI implementation by layering itself on top of Tomcat's JNDI instantiation; Tomcat JNDI is read-only
  • Deployment types: JAR only
  • Management support: No
  • Support: limited, built on top JBoss Microcontainer that is the core of JBoss 5.0, supported option for Seam on Tomcat
  • JMS Provider: same configuration files as JBoss 5.x. JMS is configured in hsqldb-persistence-service.xml, and this can be adjusted to work with other databases
  • XA Connection Pool: No
  • EJB Timer Services: No
  • *Persistence Providers:*Hibernate
  • Limitations: no remote JMS; local interfaces only; local-only JBoss JNDI implementation
  • Documentation: limited
  • EJB 3.1: No

Apache OpenEJB 3.1

  • License: Apache License
  • *Java:*JDK 5.0 or 6.0
  • Tomcat integration:Yes, modifications to startup shell script
  • *Tomcat Versions:*Tomcat 6.x or 5.5
  • *Deployment to Tomcat:*war file
  • *List of features:*EJB 3.0 and 3.1, JTA, JAX-WS, JMS, J2EE Connectors, JPA, JNDI. OpenEJB uses several other open source frameworks such as OpenJPA to provide JPA and CMP persistence, ActiveMQ for JMS/MDB, and Apache CXF for JAX-WS features.
  • *JNDI configuration:*flexible JNDI naming schema
  • *Deployment types:*Collapsed EAR (war), JAR
  • Management support: ActiveMQ JMX mbeans
  • *Support:*Community support, mailing lists and forums, EJB container for Apache Geronimo
  • *JMS Provider:*ActiveMQ
  • *XA Connection Pool:*Yes
  • *EJB Timer Services:*Yes
  • *Persistence Providers:*OpenJPA, Hibernate
  • *Limitations:*OpenEJB uses OpenJPA to provide JPA and CMP persistence, and OpenJPA currently requires a JavaAgent to function properly.
  • *Documentation:*limited but better than others
  • *EJB 3.1:*partial

EasyBeans

  • *License:*LGPL
  • *Java:*JDK 5.0 or 6.0
  • Tomcat integration: Yes
  • *Tomcat Versions:*Tomcat 6.x or 5.5
  • *Deployment to Tomcat:*war file
  • *List of features:*EJB 3.0, JAX-WS, OSGi support
  • JNDI configuration:?
  • *Deployment types:*JAR
  • Management support:?
  • *Support:*Community support and professional support, mailing list, JIRA, EJB container for JOnAS application server
  • JMS Provider:?
  • XA Connection Pool:?
  • *EJB Timer Services:*Yes
  • *Persistence Providers:*OpenJPA, Hibernate, TopLink, EclipseLink
  • Limitations:
  • *Documentation:*limited
  • EJB 3.1: No
grigory
A: 

This truly helped, Now with the Advent of JBoss AS 6 M4 and EJB 3.1 capability we will have to enhance this list

Thanks a lot, Manuswath

Manuswath
thanks. you are welcome to add answer for new JBoss embedded option. At the time of the writing JBoss offering was clearly for development purposes only.
grigory