Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 370253

Summary: KernelBundleClassLoader cannot clear JDBC-Drivers on JRE 7
Product: [RT] Virgo Reporter: Roland Hauser <roland.hauser>
Component: runtimeAssignee: Glyn Normington <glyn.normington>
Status: CLOSED FIXED QA Contact:
Severity: enhancement    
Priority: P3 CC: glyn.normington, tobiasz.dworak
Version: unspecified   
Target Milestone: 3.5.0.M05   
Hardware: PC   
OS: Linux   
Whiteboard:
Bug Depends on:    
Bug Blocks: 382710    

Description Roland Hauser CLA 2012-01-31 13:03:52 EST
Build Identifier: 3.0.2.RELEASE

In method KernelBundleClassLoader#clearJdbcDrivers appears following code:

...
 synchronized(DriverManager.class) {
            try {
                Field writeDriversField = DriverManager.class.getDeclaredField("writeDrivers");
                writeDriversField.setAccessible(true);
...

This ends up in a java.lang.NoSuchFieldException because field 'writeDrivers' does not exist anymore on java.sql.DriverManager (JDK 7u2).

I assume the field is newly named 'registeredDrivers'.

Cheers
Roland

Reproducible: Always

Steps to Reproduce:
1. Run Virgo with JDK 7
2. Shutdown Virgo; Exception is logged to log.log
Comment 1 Roland Hauser CLA 2012-01-31 13:04:47 EST
Here a snipped from the log file:

[2012-01-31 18:50:38.213] WARN  System Bundle Shutdown       o.e.v.kernel.userregion.internal.equinox.KernelBundleClassLoader  Failure when clearing JDBC drivers for KernelBundleClassLoader: [bundle=com.bechtle.ecom.plan-0.0.1-com.bechtle.ecom.mesosphere.ordertracking.impl_0.0.1.SNAPSHOT-v21085-1328024999389] java.lang.NoSuchFieldException: writeDrivers
        at java.lang.Class.getDeclaredField(Unknown Source)
        at org.eclipse.virgo.kernel.userregion.internal.equinox.KernelBundleClassLoader.clearJdbcDrivers(KernelBundleClassLoader.java:271)
        at org.eclipse.virgo.kernel.userregion.internal.equinox.KernelBundleClassLoader.close(KernelBundleClassLoader.java:260)
        at org.eclipse.osgi.internal.loader.BundleLoader.close(BundleLoader.java:324)
        at org.eclipse.osgi.internal.loader.BundleLoader.closeBundleLoader(BundleLoader.java:1360)
        at org.eclipse.osgi.framework.internal.core.BundleHost.refresh(BundleHost.java:130)
        at org.eclipse.osgi.framework.internal.core.StartLevelManager.unloadAllBundles(StartLevelManager.java:655)
        at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:262)
        at org.eclipse.osgi.framework.internal.core.StartLevelManager.shutdown(StartLevelManager.java:215)
        at org.eclipse.osgi.framework.internal.core.InternalSystemBundle.suspend(InternalSystemBundle.java:284)
        at org.eclipse.osgi.framework.internal.core.Framework.shutdown(Framework.java:690)
        at org.eclipse.osgi.framework.internal.core.Framework.close(Framework.java:597)
        at org.eclipse.osgi.framework.internal.core.InternalSystemBundle$1.run(InternalSystemBundle.java:261)
        at java.lang.Thread.run(Unknown Source)
Comment 2 Glyn Normington CLA 2012-02-01 04:21:39 EST
Thanks for raising this. Since Virgo has not been tested with Java 7 AFAIK, flagging as enhancement.
Comment 3 Glyn Normington CLA 2012-05-14 06:43:12 EDT
*** Bug 379381 has been marked as a duplicate of this bug. ***
Comment 4 Glyn Normington CLA 2012-05-28 11:22:34 EDT
Fixed in kernel commit ac361c708cf722a43afbddd76a969f50f1426941.