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

Reply via email to