I'm having trouble getting a connection through tapestry-hibernate. Any help would be appreciated! I imagine I'm not seeing some small thing I've overlooked.
I'm configuring the hibernate connection in code, to use a DataSource provided by the servlet container. The data source is available - I can tell, because I'm using it in my tapestry module to run Flyway database migration scripts, which do modify the database - but any tapestry-hibernate action (e.g. invoking a method on a DAO) produces: *java.lang.UnsupportedOperationException* *The user must supply a JDBC connection* - org.hibernate.connection.UserSuppliedConnectionProvider.getConnection(UserSuppliedConnectionProvider.java:54) - org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446) - org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167) - org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:160) - org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:81) - org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1473) - org.apache.tapestry5.internal.hibernate.HibernateSessionManagerImpl.startNewTransaction(HibernateSessionManagerImpl.java:38) - org.apache.tapestry5.internal.hibernate.HibernateSessionManagerImpl.<init>(HibernateSessionManagerImpl.java:33) - ... Attached are the relevant lines out of my module: public void contributeApplicationDefaults( MappedConfiguration<String, String> configuration) { // There's no hibernate.cfg.xml file configuration.add(HibernateSymbols.DEFAULT_CONFIGURATION, "false"); } @EagerLoad public DatabaseMigrator buildDatabaseMigrator() { DataSource dataSource = (DataSource) lookup(datasourceName); FlywayDatabaseMigrator migrator = new FlywayDatabaseMigrator(dataSource); migrator.updateDatabase(); return migrator; } public void contributeHibernateSessionSource( OrderedConfiguration<HibernateConfigurer> config) { HibernateConfigurer hibernateConfigurer = new HibConfig(datasourceName); config.add("hibconfig", hibernateConfigurer); } public void contributeHibernateEntityPackageManager( Configuration<String> configuration) { // Specifies the package configuration.add("com.tsg.configtool.domain"); } private static final class HibConfig implements HibernateConfigurer { private String datasourceName; HibConfig(String datasourceName) { this.datasourceName = datasourceName; } @Override public void configure(org.hibernate.cfg.Configuration configuration) { configuration.setProperty("hibernate.dialect", DB_DIALECT); configuration.setProperty("connection.datasource", datasourceName); } } private Object lookup(String resourceName) { try { return new InitialContext().lookup(resourceName); } catch (NamingException e) { throw new RuntimeException("Unable to lookup resource \"" + resourceName + "\".", e); } } Michael