Myrna van Lunteren wrote:
On 5/26/06, Olav Sandstaa <[EMAIL PROTECTED]> wrote:
[...snipped excellent investigative work...]
Any preferences or suggestions for better ideas?
Thanks,
Olav
I may be misunderstanding or just have missed it, but why does this
work with jdk15 and earlier?
My understanding is that it works with jdk15 and earlier since these
jvms do not support/do autoloading of JDBC drivers:
* When you run derbyall with jdk15 and earlier the embedded driver will
be loaded when the Nist tests (via ij) explicitly requests the embedded
driver to be loaded (via Class.forName(....)). At this point
derby.system.home is set to the correct value.
* When you run derbyall with jdk16 autoloading is in effect (see
Derby-930), and the embedded Derby driver is loaded during startup of
the test harness when the RunList.shouldSkipTest loads the DB2 driver:
// skip if the IBM Universal JDBC Driver is not in the Classpath
// note that that driver loads some javax.naming.* classes which
may not
// be present at runtime, and thus we need to catch a possible
error too
try {
Class.forName("com.ibm.db2.jcc.DB2Driver"); // THIS LOADS
ALSO THE EMBEDDED DRIVER!!!
Due to autoloading, the Embedded driver is also loaded here. I guess the
reason is that the DB2 driver issues some calls that make the class
loader look in the derby.jar file and then autoloads the embedded
driver. (I might be wrong about the details here, but this is what I
have observed). At this point in the test derby.system.home is not set.
When the Nist tests starts this instance of the embedded driver and
Derby engine is used.
Did this explanation make it more clear why we do not see this problem
with jdk15 and ealrier, only with jdk16?
..olav