On 7/11/2012 10:14 PM, Matthew Hauck wrote:

I am writing about the well known error: "Failed to start database '...' with class loader ..."  I realize that you cannot have two simultaneous connections from two different JVMs to a derby embedded database. My question is whether or not it is possible to disconnect / "unload" / "unboot" one connection in order to load up the other one, etc. Or does the first JVM have to entirely stop before the next one can make a connection?

I ask for TDD reasons. One of the tests I'm trying to write (on cucumber / jruby) requires some out-of-process testing. i.e. I have one process (cucumber) invoking the tests, which requires the spawning of another process. I would like the parent process to be able to turn off its connection to the embedded database (without shutting down), such that it can allow the spawned process to access the database, and then turn it back on and make sure things went as planned after the other process completes.

Is this possible?

You can shutdown a single database without exiting the JVM using the shudown=true  attribute if using a DriverManager connection:
http://db.apache.org/derby/docs/10.9/ref/rrefattrib16471.html
or with the DataSource property shutdownDatabase()
http://db.apache.org/derby/docs/10.9/publishedapi/jdbc4/org/apache/derby/jdbc/EmbeddedDataSource40.html


This will allow another jvm to boot the database. Then then after the spawned process completes,  first jvm can reconnect which will  reboot the database.

Best

Kathey