Rick Hillegas wrote:


Let me summarize the odd behavior:

o Under JDBC4, if you explicitly shut down the Derby engine, then subsequent calls to DriverManager.getConnection() will fail. o There is a workaround: Explictly reboot the Derby engine by issuing Class.forName() on the embedded driver.

I think Olov also brought up the good point that the Derby engine will start for client programs just because the derby.jar is in the classpath.

You could look at this problem from the following angles:

1) This is a Derby bug which we could fix if we separated driver initialization from engine booting.

2) This is an odd Derby behavior which we should document: If you explicitly shut down the engine, then if you want to get a connection later, you must explicitly reboot the engine.

3) This is a jdk bug. The DriverManager should rerun its autoloading logic if the registered drivers can't get a connection.

I think we will have a hard time convincing the jdk folks that this is their bug. So I think the choice comes down to (1) vs. (2). I can see this go either way. My instinct is to opt for (2) because it seems less risky.

What are the risks of 1?

Kathey


Reply via email to