Hi,

You are using the server mode. That means the database "lives" on the
server side (the server can be in the same process as the client, or
in a different process). If the server is closed, the server is
stopped, and therefore the TCP listener is closed. Could it be this
problem? At least the exception message says "Connection is broken".
This is not because the database is closed, but because the server is
stopped.

I guess the database is still alive actually, just the server that is closed.

Why do you use the server mode?

Regards
Thomas



On Wed, Feb 15, 2012 at 5:13 PM, zaraki kenpachi
<[email protected]> wrote:
> I tried the following:
>
> 1. Started web app with mvn jetty:run
> 2. Opened the console (servet)
> 3. SET DB_CLOSE_ON_EXIT=FALSE
> 4. Shutdown Jetty
>
> I got the same error, but here it is with the debugging in case that
> has a clue that I'm overlooking:
>
> **/dbMeta0.getDatabaseProductName();
> 02-15 09:36:47 jdbc:
> /**/dbMeta0.getDatabaseProductVersion();
> 02-15 09:37:02 jdbc:
> /**/Statement stat5 = conn4.createStatement(1004, 1008);
> 02-15 09:37:02 jdbc:
> /**/stat5.setMaxRows(1000);
> 02-15 09:37:02 jdbc:
> /**/stat5.execute("SET DB_CLOSE_ON_EXIT=FALSE");
> 02-15 09:37:02 jdbc: SESSION_PREPARE_READ_PARAMS 70
> 02-15 09:37:02 jdbc: COMMAND_EXECUTE_UPDATE 70
> 02-15 09:37:02 jdbc[3]:
> /*SQL */SET DB_CLOSE_ON_EXIT=FALSE;
> 02-15 09:37:02 jdbc: COMMAND_CLOSE 70
> 02-15 09:37:02 jdbc:
> /**/stat5.getUpdateCount();
> 02-15 09:37:02 jdbc:
> /**/stat5.close();
> ^C02-15 09:37:10 database: closing mem:test-db from shutdown hook
> 02-15 09:37:10 database: disconnecting session #2
> 02-15 09:37:10 database: disconnected session #2
> 02-15 09:37:10 database: disconnecting session #3
> 02-15 09:37:10 database: disconnected session #3
> 02-15 09:37:10 database: closing mem:test-db
> 02-15 09:37:10 database: closed
> 02-15 09:37:10 jdbc:
> /**/conn4.close();
> 02-15 09:37:10 jdbc: SESSION_UNDO_LOG_POS 0
> 02-15 09:37:10 jdbc: SESSION_CLOSE 0
> 02-15 09:37:10 jdbc: close
> java.io.IOException: org.h2.jdbc.JdbcSQLException: Connection is
> broken: "session closed" [90067-164]
>        at org.h2.message.DbException.getJdbcSQLException(DbException.java:
> 329)
>        at org.h2.message.DbException.get(DbException.java:169)
>        at org.h2.message.DbException.get(DbException.java:146)
>        at org.h2.engine.Session.prepareLocal(Session.java:400)
>        at org.h2.server.TcpServerThread.closeSession(TcpServerThread.java:
> 163)
>        at org.h2.server.TcpServerThread.process(TcpServerThread.java:267)
>        at org.h2.server.TcpServerThread.run(TcpServerThread.java:146)
>        at java.lang.Thread.run(Thread.java:722)
>
>        at org.h2.engine.SessionRemote.done(SessionRemote.java:568)
>        at org.h2.engine.SessionRemote.close(SessionRemote.java:512)
>        at org.h2.jdbc.JdbcConnection.close(JdbcConnection.java:365)
>        at org.h2.server.web.WebSession.close(WebSession.java:252)
>        at org.h2.server.web.WebServer.stop(WebServer.java:388)
>        at org.h2.server.web.WebServlet.destroy(WebServlet.java:55)
>        at
> org.eclipse.jetty.servlet.ServletHolder.destroyInstance(ServletHolder.java:
> 343)
>        at org.eclipse.jetty.servlet.ServletHolder.doStop(ServletHolder.java:
> 317)
>        at
> org.eclipse.jetty.util.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:
> 84)
>        at
> org.eclipse.jetty.servlet.ServletHandler.doStop(ServletHandler.java:
> 207)
>        at
> org.eclipse.jetty.util.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:
> 84)
>        at
> org.eclipse.jetty.server.handler.HandlerWrapper.doStop(HandlerWrapper.java:
> 102)
>        at
> org.eclipse.jetty.security.SecurityHandler.doStop(SecurityHandler.java:
> 356)
>        at
> org.eclipse.jetty.security.ConstraintSecurityHandler.doStop(ConstraintSecurityHandler.java:
> 237)
>        at
> org.eclipse.jetty.util.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:
> 84)
>        at
> org.eclipse.jetty.server.handler.HandlerWrapper.doStop(HandlerWrapper.java:
> 102)
>        at
> org.eclipse.jetty.server.session.SessionHandler.doStop(SessionHandler.java:
> 133)
>        at
> org.eclipse.jetty.util.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:
> 84)
>        at
> org.eclipse.jetty.server.handler.HandlerWrapper.doStop(HandlerWrapper.java:
> 102)
>        at
> org.eclipse.jetty.server.handler.ContextHandler.doStop(ContextHandler.java:
> 798)
>        at
> org.eclipse.jetty.servlet.ServletContextHandler.doStop(ServletContextHandler.java:
> 153)
>        at org.eclipse.jetty.webapp.WebAppContext.doStop(WebAppContext.java:
> 478)
>        at
> org.mortbay.jetty.plugin.JettyWebAppContext.doStop(JettyWebAppContext.java:
> 264)
>        at
> org.eclipse.jetty.util.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:
> 84)
>        at
> org.eclipse.jetty.server.handler.HandlerCollection.doStop(HandlerCollection.java:
> 245)
>        at
> org.eclipse.jetty.util.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:
> 84)
>        at
> org.eclipse.jetty.server.handler.HandlerCollection.doStop(HandlerCollection.java:
> 245)
>        at
> org.eclipse.jetty.util.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:
> 84)
>        at
> org.eclipse.jetty.server.handler.HandlerWrapper.doStop(HandlerWrapper.java:
> 102)
>        at org.eclipse.jetty.server.Server.doStop(Server.java:324)
>        at
> org.eclipse.jetty.util.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:
> 84)
>        at
> org.eclipse.jetty.util.thread.ShutdownThread.run(ShutdownThread.java:
> 124)
> Caused by: org.h2.jdbc.JdbcSQLException: Connection is broken:
> "session closed" [90067-164]
>        at org.h2.message.DbException.getJdbcSQLException(DbException.java:
> 329)
>        at org.h2.message.DbException.get(DbException.java:169)
>        at org.h2.message.DbException.get(DbException.java:146)
>        at org.h2.engine.Session.prepareLocal(Session.java:400)
>        at org.h2.server.TcpServerThread.closeSession(TcpServerThread.java:
> 163)
>        at org.h2.server.TcpServerThread.process(TcpServerThread.java:267)
>        at org.h2.server.TcpServerThread.run(TcpServerThread.java:146)
>        at java.lang.Thread.run(Thread.java:722)
>
>        at org.h2.engine.SessionRemote.done(SessionRemote.java:565)
>        ... 31 more
> org.h2.jdbc.JdbcSQLException: Connection is broken: "session
> closed" [90067-164]
>        at org.h2.message.DbException.getJdbcSQLException(DbException.java:
> 329)
>        at org.h2.message.DbException.get(DbException.java:169)
>        at org.h2.message.DbException.get(DbException.java:146)
>        at org.h2.engine.SessionRemote.checkClosed(SessionRemote.java:500)
>        at org.h2.engine.SessionRemote.removeServer(SessionRemote.java:431)
>        at org.h2.command.CommandRemote.prepare(CommandRemote.java:80)
>        at org.h2.command.CommandRemote.<init>(CommandRemote.java:46)
>        at org.h2.engine.SessionRemote.prepareCommand(SessionRemote.java:437)
>        at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:
> 1121)
>        at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:164)
>        at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:152)
>        at org.h2.server.web.DbStarter.contextDestroyed(DbStarter.java:74)
>        at
> org.eclipse.jetty.server.handler.ContextHandler.doStop(ContextHandler.java:
> 806)
>        at
> org.eclipse.jetty.servlet.ServletContextHandler.doStop(ServletContextHandler.java:
> 153)
>        at org.eclipse.jetty.webapp.WebAppContext.doStop(WebAppContext.java:
> 478)
>        at
> org.mortbay.jetty.plugin.JettyWebAppContext.doStop(JettyWebAppContext.java:
> 264)
>        at
> org.eclipse.jetty.util.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:
> 84)
>        at
> org.eclipse.jetty.server.handler.HandlerCollection.doStop(HandlerCollection.java:
> 245)
>        at
> org.eclipse.jetty.util.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:
> 84)
>        at
> org.eclipse.jetty.server.handler.HandlerCollection.doStop(HandlerCollection.java:
> 245)
>        at
> org.eclipse.jetty.util.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:
> 84)
>        at
> org.eclipse.jetty.server.handler.HandlerWrapper.doStop(HandlerWrapper.java:
> 102)
>        at org.eclipse.jetty.server.Server.doStop(Server.java:324)
>        at
> org.eclipse.jetty.util.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:
> 84)
>        at
> org.eclipse.jetty.util.thread.ShutdownThread.run(ShutdownThread.java:
> 124)
> 2012-02-15
> 09:37:10.994:INFO:oejsl.ELContextCleaner:javax.el.BeanELResolver
> purged
>
> On Feb 15, 8:36 am, Noel Grandin <[email protected]> wrote:
>> Your URL looks fine.
>> Looks like a bug somewhere in H2 to me.
>> But I don't know why the code is ignoring that setting.
>>
>> The only thing I can suggest is executing this command when your
>> application starts up:
>>    SET DB_CLOSE_ON_EXIT=FALSE
>>
>> On 2012-02-15 16:30, zaraki kenpachi wrote:
>>
>>
>>
>>
>>
>>
>>
>> > Here is what I'm using in persistence.xml:
>> > <property name = "javax.persistence.jdbc.url" value = "jdbc:h2:tcp://
>> > localhost/mem:test-db;create=true;DB_CLOSE_ON_EXIT=FALSE"/>
>>
>> > I'm pretty sure that is right, but did I miss something?
>>
>> > I'm using H2 1.3.164.
>>
>> > I can make a small demo maven/jetty/h2 project that displays the issue
>> > if that would be helpful.
>>
>> > On Feb 15, 1:12 am, Noel Grandin<[email protected]>  wrote:
>> >> Yes.
>>
>> >> That means that the DB_CLOSE_ON_EXIT=FALSE flag is not working. Are you
>> >> sure you tested with that flag in place?
>>
>> >> On 2012-02-14 16:31, zaraki kenpachi wrote:
>>
>> >>> from shutdown hook
>
> --
> You received this message because you are subscribed to the Google Groups "H2 
> Database" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to 
> [email protected].
> For more options, visit this group at 
> http://groups.google.com/group/h2-database?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups "H2 
Database" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/h2-database?hl=en.

Reply via email to