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

Bug 350785

Summary: ClassCastException in DefaultBundleClassLoaderHelper when starting Jetty 7 under Felix 3.2.x
Product: [RT] Jetty Reporter: azverkan
Component: osgiAssignee: Hugues Malphettes <hmalphettes>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: P3 CC: jetty-inbox
Version: unspecified   
Target Milestone: 7.5.x   
Hardware: PC   
OS: Windows 7   
Whiteboard:
Attachments:
Description Flags
Patch for Felix switch to ArrayList
none
Patch with tabs fixed. none

Description azverkan CLA 2011-06-30 04:52:22 EDT
Build Identifier: 7.4.3-SNAPSHOT

As of a change to Felix in January 2010:

@@ -36,7 +36,7 @@
     private final Felix __m_felix;
 
     private final BundleArchive m_archive;
-    private IModule[] m_modules = new IModule[0];
+    private final List<Module> m_modules = new ArrayList<Module>(0);
     private volatile int m_state;
     private boolean m_useDeclaredActivationPolicy;
     private BundleActivator m_activator = null;


01:00:30.212 [FelixStartLevel] DEBUG org.eclipse.jetty.util.log - STARTED org.eclipse.jetty.server.Server@28b301f2 java.lang.ClassCastException: java.util.ArrayList cannot be cast to [Ljava.lang.Object;
        at org.eclipse.jetty.osgi.boot.utils.internal.DefaultBundleClassLoaderHelper.internalGetFelixBundleClassLoader(DefaultBundleClassLoaderHelper.java:148)
        at org.eclipse.jetty.osgi.boot.utils.internal.DefaultBundleClassLoaderHelper.getBundleClassLoader(DefaultBundleClassLoaderHelper.java:97)
        at org.eclipse.jetty.osgi.boot.internal.webapp.OSGiWebappClassLoader.<init>(OSGiWebappClassLoader.java:87)
        at org.eclipse.jetty.osgi.boot.internal.webapp.WebBundleDeployerHelper.createWebappClassLoader(WebBundleDeployerHelper.java:788)
        at org.eclipse.jetty.osgi.boot.internal.webapp.WebBundleDeployerHelper.registerContext(WebBundleDeployerHelper.java:433)
        at org.eclipse.jetty.osgi.boot.internal.webapp.WebBundleDeployerHelper.registerContext(WebBundleDeployerHelper.java:379)
        at org.eclipse.jetty.osgi.boot.internal.webapp.JettyContextHandlerServiceTracker.serviceChanged(JettyContextHandlerServiceTracker.java:248)
        at org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:864)
        at org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:732)
        at org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:662)
        at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:3745)
        at org.apache.felix.framework.Felix.access$000(Felix.java:80)
        at org.apache.felix.framework.Felix$2.serviceChanged(Felix.java:717)
        at org.apache.felix.framework.ServiceRegistry.registerService(ServiceRegistry.java:107)
        at org.apache.felix.framework.Felix.registerService(Felix.java:2862)
        at org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:251)
        at org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:229)
        at org.eclipse.jetty.osgi.boot.JettyBootstrapActivator.registerContext(JettyBootstrapActivator.java:288)
        at org.eclipse.jetty.osgi.boot.JettyBootstrapActivator.registerContext(JettyBootstrapActivator.java:265)
        at org.eclipse.jetty.osgi.boot.internal.webapp.WebBundleTrackerCustomizer.register(WebBundleTrackerCustomizer.java:187)
        at org.eclipse.jetty.osgi.boot.internal.webapp.WebBundleTrackerCustomizer.addingBundle(WebBundleTrackerCustomizer.java:78)
        at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:439)
        at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:261)
        at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:233)
        at org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:413)
        at org.apache.felix.framework.util.EventDispatcher.invokeBundleListenerCallback(EventDispatcher.java:800)
        at org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:728)
        at org.apache.felix.framework.util.EventDispatcher.fireBundleEvent(EventDispatcher.java:610)
        at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:3734)
        at org.apache.felix.framework.Felix.startBundle(Felix.java:1807)
        at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1188)01:00:30.370 [FelixStartLevel] DEBUG org.eclipse.jetty.util.log - parsing: sid=null,pid=null
        at org.apache.felix.framework.StartLevelImpl.run(StartLevelImpl.java:264)
        at java.lang.Thread.run(Thread.java:662)


Reproducible: Always
Comment 1 azverkan CLA 2011-06-30 04:56:49 EDT
Created attachment 198882 [details]
Patch for Felix switch to ArrayList
Comment 2 azverkan CLA 2011-06-30 04:59:37 EDT
Created attachment 198883 [details]
Patch with tabs fixed.
Comment 3 Hugues Malphettes CLA 2011-07-14 03:40:58 EDT
Thanks for filing the bug and attaching the patch.
Sorry for the delay as I was off-line taking some holydays.
Comment 4 Hugues Malphettes CLA 2011-07-15 00:12:18 EDT
Fixed for the next release (adfter 7.4.4) with commit http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/commit/?id=5e94077ba3030dbf95a89175d85757d3b16b9a1b
Comment 5 Hugues Malphettes CLA 2011-07-31 22:56:57 EDT
This patch was also merged into jetty-8 correctly.
Comment 6 azverkan CLA 2011-09-08 12:55:02 EDT
I can confirm this is fixed in the 7.5.0 release (but not as 7.4.4 per the comment above).