I run Roller on Tomcat, but before Roller 5 is officially released I'd like to make sure it runs on the widest possible range of Java EE web containers.
Roller v5 uses OpenJPA v2 for persistence, and we include the OpenJPA jars in Roller's WEB-INF/lib directory. We also run the OpenJPA byte-code enhancement on the Roller classes at build time, so OpenJPA is essentially "woven" right into Roller. This arrangement which works fine on Tomcat v5 and v6. It also appears to work fine on WebSphere v6 and Glassfish v2 and v3. On other app servers, I have run into some problems. On WebLogic v10 and JBoss v5 I've run into problems that appear to be caused by conflicts between OpenJPA and the JPA implementations that are built into those two web containers. WebLogic uses EclipseLink JPA and JBoss uses Hibernate JPA. Does anybody with experience running on multiple JPA implementations care to offer some insights here? So... what is the best way to ensure that Roller v5 can run on the widest possible range of app severs? Here's a possible plan: 1) To ensure that Roller will run with other JPA implementations, run the Roller JUnit tests against EclipseLinkJPA and Hibernate JPA and fix any problems that arise. 2) Ship two versions of Roller 2.1) One for simple Servlet-only containers like Tomcat and Jetty. Same as we do now, this release will include OpenJPA and OpenJPA byte-code enhancement. 2.2) One for real Java EE 5 app servers that include JPA v2. This one would NOT include the OpenJPA jars and would not use any JPA byte-code enhancement. It would rely on the fact that Java EE 5 app servers already include JPA. Does that sound reasonable? Is step #1 really necessary? Thanks, Dave
