I spent morning trying to figure out how to get Roller to use a JNDI DataSource, something that had worked in the past (perhaps with Tomcat 6), but now appears to be a problem. I'm doing this (in part) to allow ASF Infra to better tune the database connection pool.
What I tried was this: 1) Edited roller's context config file (ROOT.xml) to add a DataSource like so: <?xml version="1.0" encoding="UTF-8"?> <Context path="/roller" docBase="/Users/dave/src/roller_5.0/weblogger-webapp/target/roller"> <Resource name="jdbc/rollerdb" auth="Container" type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/roller5test?autoReconnect=true&useUnicode=true&characterEncoding=utf-8&mysqlEncoding=utf8" username="scott" password="tiger" maxActive="25" maxIdle="5" removeAbandoned="true" maxWait="3000" /> </Context> 2) Edited Roller's roller-custom.properties file to replace the existing JDBD properties with this: database.configurationType=jndi database.jndi.name=jdbc/rollerdb 3) Checked Roller's persistence.xml file to ensure that the DataSource JNDI is correctly referenced there. <persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0"> <persistence-unit name ="RollerPU" transaction-type="RESOURCE_LOCAL"> <jta-data-source>java:comp/env/jdbc/rollerdb</jta-data-source> ... With that setup I get this error and Roller fails to start: java.lang.RuntimeException: <openjpa-2.3.0-r422266:1540826 fatal user error> org.apache.openjpa.persistence.ArgumentException: The persistence provider is attempting to use properties in the persistence.xml file to resolve the data source. A Java Database Connectivity (JDBC) driver or data source class name must be specified in the openjpa.ConnectionDriverName or javax.persistence.jdbc.driver property. The following properties are available in the configuration: "org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl@7d775f33". I also tried a bunch of other things to get things working: a) Added these properties to Roller's config (Roller passes them through to OpenJPA): openjpa.ConnectionDriverName=com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource openjpa.jdbc.DBDictionary=mysql b) Tried using com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource as the driverClassName in ROOT.xml c) Tried upgrading to OpenJPA 2.3.0 Apparently others have experienced this problem, but I have not seen any good solutions in response: http://stackoverflow.com/questions/13442978/openjpa-and-jndi http://mail-archives.apache.org/mod_mbox/roller-user/201402.mbox/%3ccao5arlobcvpsgnn5+cwjpedal+hzn2bb8cws5jwvcz0gkju...@mail.gmail.com%3E http://stackoverflow.com/questions/13442978/openjpa-and-jndi Any ideas? Thanks, - Dave