I'm having some problems with using HSQLDB and hibernate in IN-PROCESS mode.
It seems that it's not handling multiple connections well. I'm fairly certain HSQLDB should be okay with this.
At one point I did have this stuff working but it's broken somewhere along the way.
Code:
10:15:01,562 DEBUG net.sf.hibernate.connection.DriverManagerConnectionProvider:78 - total checked-out connections: 1
10:15:01,562 DEBUG net.sf.hibernate.connection.DriverManagerConnectionProvider:94 - opening new JDBC connection
10:15:04,562 DEBUG net.sf.hibernate.util.JDBCExceptionReporter:36 - SQL Exception
java.sql.SQLException: The database is already in use by another process
at org.hsqldb.Trace.getError(Unknown Source)
at org.hsqldb.Trace.error(Unknown Source)
at org.hsqldb.Log.open(Unknown Source)
at org.hsqldb.Database$Logger.openLog(Unknown Source)
at org.hsqldb.Database.open(Unknown Source)
at org.hsqldb.Database.<init>(Unknown Source)
at org.hsqldb.jdbcConnection.openStandalone(Unknown Source)
at org.hsqldb.jdbcConnection.<init>(Unknown Source)
at org.hsqldb.jdbcDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(DriverManager.java:512)
at java.sql.DriverManager.getConnection(DriverManager.java:140)
at net.sf.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:95)
at net.sf.hibernate.impl.BatcherImpl.openConnection(BatcherImpl.java:278)
at net.sf.hibernate.id.TableGenerator.generate(TableGenerator.java:81)
at net.sf.hibernate.id.TableHiLoGenerator.generate(TableHiLoGenerator.java:59)
at com.avalon.seaview.domain.SeaviewGenerator.generate(SeaviewGenerator.java:23)
at net.sf.hibernate.impl.SessionImpl.saveWithGeneratedIdentifier(SessionImpl.java:747)
at net.sf.hibernate.impl.SessionImpl.save(SessionImpl.java:720)
at com.avalon.seaview.web.EditViewDocumentDetailsPage.createNewDocument(EditViewDocumentDetailsPage.java:948)
at com.avalon.seaview.web.EditViewDocumentDetailsPage.save(EditViewDocumentDetailsPage.java:782)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.apache.tapestry.listener.ListenerMap.invokeTargetMethod(ListenerMap.java:301)
at org.apache.tapestry.listener.ListenerMap.access$100(ListenerMap.java:87)
at org.apache.tapestry.listener.ListenerMap$SyntheticListener.invoke(ListenerMap.java:141)
at org.apache.tapestry.listener.ListenerMap$SyntheticListener.actionTriggered(ListenerMap.java:146)
at org.apache.tapestry.form.Form.renderComponent(Form.java:457)
at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:898)
at org.apache.tapestry.form.Form.rewind(Form.java:602)
at org.apache.tapestry.engine.RequestCycle.rewindForm(RequestCycle.java:476)
at org.apache.tapestry.form.Form.trigger(Form.java:616)
at org.apache.tapestry.engine.DirectService.service(DirectService.java:210)
at org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:913)
at com.avalon.seaview.web.SeaviewBaseEngine.service(SeaviewBaseEngine.java:120)
at org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:238)
at com.avalon.seaview.web.SeaviewServlet.doService(SeaviewServlet.java:38)
at org.apache.tapestry.ApplicationServlet.doPost(ApplicationServlet.java:367)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
at com.avalon.seaview.web.SeaviewServlet.service(SeaviewServlet.java:75)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:284)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:204)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:257)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:245)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:199)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:184)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:164)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:149)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:156)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:972)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:206)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:833)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:732)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:619)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:688)
at java.lang.Thread.run(Thread.java:534)
10:15:04,578 WARN net.sf.hibernate.util.JDBCExceptionReporter:38 - SQL Error: -1, SQLState: 08001
10:15:04,578 ERROR net.sf.hibernate.util.JDBCExceptionReporter:46 - The database is already in use by another process
10:15:04,578 ERROR net.sf.hibernate.util.JDBCExceptionReporter:38 - Cannot open connection