On Nov 14, 2010, at 7:39 AM, Dave wrote: > 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?
I get the feeling that we'd have to do #1 in order to do #2. It's not like you can just strip out the JPA JARs and expect everything to work, can you? If the JPA impls were as consistent as the servlet impls, I'd think different, but I don't think they are.
