I did some more testing -- it looks like your machine can't resolve
"localhost" (don't laugh -- it happens!)

I get the same error as you if I try to connect to the following:

jdbc:h2:tcp://UNKNOWN_HOST/mem:testing;IFEXISTS=TRUE

Cheers
Kerry

On Sat, Jun 26, 2010 at 12:44 AM, Calcul8r <[email protected]> wrote:

> Kerry,
>
> I don't really need to use a database in the testcase.  I just wanted
> to make 100% certain that the database still existed after closing the
> connection in the set up method (and it does).  I do want to use that
> same database in the web service and I do use the tcp://localhost in
> that url.  (The name of the variable is "testing" in the web service
> and DATABASE_NAME in the testcase.)
>
> Quote:
> con = DriverManager.getConnection("jdbc:h2:tcp://localhost/mem:" +
> testing + ";IFEXISTS=TRUE");
>
> Marie
>
> On Jun 25, 5:45 am, Kerry Sainsbury <[email protected]> wrote:
> > Are you saying that your test and your webservice need to talk to the
> same
> > database? In that case, don't you need to need to use similar connection
> > strings.
> >
> > Instead of "jdbc:h2:mem:" + DATABASE_NAME
> > Try this:   "jdbc:h2:tcp://localhost/mem:" + DATABASE_NAME
> >
> > Seems plausible to me -- but I haven't tested it :-)
> >
> > Cheers
> > Kerry
> >
> >
> >
> > On Fri, Jun 25, 2010 at 10:48 AM, Calcul8r <[email protected]> wrote:
> > > I have developed a web service that I'm running in WebSphere
> > > application server.  I want to test a method that simply retrieves all
> > > values from a database table and returns them as part of a payload in
> > > a response.  I want to use an in-memory database for testing so the
> > > tests will be easily repeatable.
> >
> > > I create the database and populate the table in a @BeforeClass
> > > method.  I set up the database connection as follows....
> > > try {
> > > Class.forName("org.h2.Driver");
> > > } catch (Exception e) {
> > > e.printStackTrace();
> > > }
> >
> > > // Set up table in h2
> > > Connection con = DriverManager.getConnection("jdbc:h2:mem:" +
> > > DATABASE_NAME + ";DB_CLOSE_DELAY=-1");
> >
> > > The database is created correctly, because I can write some temporary
> > > code at the very start of my test case to prove the database is still
> > > alive and well...
> > > // is my database still alive
> > > Connection con = null;
> > > try {
> > >        con = DriverManager.getConnection("jdbc:h2:mem:" + DATABASE_NAME
> +
> > > ";IFEXISTS=TRUE");
> > >        PreparedStatement stmt1 = con.prepareStatement("SELECT * FROM
> > > BLAH.BLAH2");
> > >        ResultSet blah = stmt1.executeQuery();
> > >        while (blah.next()) {
> > >                System.out.println(blah.getString(1));
> > >                System.out.println(blah.getString(2));
> > >        }
> > >        blah.close();
> > >        stmt1.close();
> > >        con.close();
> > > } catch (SQLException e) {
> > >        // TODO Auto-generated catch block
> > >        e.printStackTrace();
> > > }
> >
> > > And I get output in my console...
> > > ID1
> > > NAME1
> > > ID2
> > > NAME2
> >
> > > Then I actually make the real web services call... I pass the name of
> > > the database in the query string.
> > > In the web services method, I attempt to get a connection to the
> > > database as follows...
> >
> > > Connection con = null;
> > > if (testing != null) {
> > >        try {
> > >                Class.forName("org.h2.Driver");
> > >                con =
> > > DriverManager.getConnection("jdbc:h2:tcp://localhost/mem:" +
> > > testing + ";IFEXISTS=TRUE");
> > >        } catch (SQLException e) {
> > >                e.printStackTrace();
> > >        }
> > > }
> >
> > > ... and it waits several seconds and ultimately bombs out with...
> > > [6/24/10 17:25:08:406 CDT] 00000023 SystemErr     R
> > > org.h2.jdbc.JdbcSQLException: Connection is broken: "session
> > > closed" [90067-137]
> > > [6/24/10 17:25:08:406 CDT] 00000023 SystemErr     R     at
> > > org.h2.message.DbException.getJdbcSQLException(DbException.java:327)
> > > [6/24/10 17:25:08:406 CDT] 00000023 SystemErr     R     at
> > > org.h2.message.DbException.get(DbException.java:167)
> > > [6/24/10 17:25:08:406 CDT] 00000023 SystemErr     R     at
> > > org.h2.message.DbException.get(DbException.java:144)
> > > [6/24/10 17:25:08:406 CDT] 00000023 SystemErr     R     at
> > > org.h2.engine.SessionRemote.checkClosed(SessionRemote.java:470)
> > > [6/24/10 17:25:08:406 CDT] 00000023 SystemErr     R     at
> > > org.h2.engine.SessionRemote.connectServer(SessionRemote.java:331)
> > > [6/24/10 17:25:08:406 CDT] 00000023 SystemErr     R     at
> > > org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:
> > > 223)
> > > [6/24/10 17:25:08:406 CDT] 00000023 SystemErr     R     at
> > > org.h2.engine.SessionRemote.createSession(SessionRemote.java:217)
> > > [6/24/10 17:25:08:406 CDT] 00000023 SystemErr     R     at
> > > org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:111)
> > > [6/24/10 17:25:08:406 CDT] 00000023 SystemErr     R     at
> > > org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:95)
> > > [6/24/10 17:25:08:406 CDT] 00000023 SystemErr     R     at
> > > org.h2.Driver.connect(Driver.java:58)
> > > [6/24/10 17:25:08:406 CDT] 00000023 SystemErr     R     at
> > > java.sql.DriverManager.getConnection(DriverManager.java:572)
> > > [6/24/10 17:25:08:406 CDT] 00000023 SystemErr     R     at
> > > java.sql.DriverManager.getConnection(DriverManager.java:218)
> >
> > > Is it possible to do what I am trying to accomplish... or am I hitting
> > > JVM/classloader issues?  (Note that I am using tcp://localhost in the
> > > web service connection.  I was using version 1.1.112 which also tossed
> > > a broken connection message.  This latest version (1.2.137) mentions
> > > the session is closed in addition to the broken connection message.
> >
> > > --
> > > 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]<h2-database%[email protected]>
> <h2-database%2bunsubscr...@googlegr­oups.com>
> > > .
> > > For more options, visit this group at
> > >http://groups.google.com/group/h2-database?hl=en.- Hide quoted text -
> >
> > - Show quoted text -
>
> --
> 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]<h2-database%[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