| Summary: | KernelBundleClassLoader cannot clear JDBC-Drivers on JRE 7 | ||
|---|---|---|---|
| Product: | [RT] Virgo | Reporter: | Roland Hauser <roland.hauser> |
| Component: | runtime | Assignee: | 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 | ||
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)
Thanks for raising this. Since Virgo has not been tested with Java 7 AFAIK, flagging as enhancement. *** Bug 379381 has been marked as a duplicate of this bug. *** Fixed in kernel commit ac361c708cf722a43afbddd76a969f50f1426941. |
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