[ https://issues.apache.org/jira/browse/FELIX-4792?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Felix Meschberger resolved FELIX-4792. -------------------------------------- Resolution: Fixed Implemented catching any Throwable during initial component initialization and logging it in Rev. 1658457. In addition the component is disabled to make sure any partical setup is rolled back. > [SCR] Handle Errors on component initialization > ----------------------------------------------- > > Key: FELIX-4792 > URL: https://issues.apache.org/jira/browse/FELIX-4792 > Project: Felix > Issue Type: Bug > Components: Declarative Services (SCR) > Affects Versions: scr-1.8.2 > Reporter: Felix Meschberger > Assignee: Felix Meschberger > Fix For: scr-2.0.0 > > > During component initialization the component implementation class is loaded. > If the class or one of its dependencies cannot be properly loaded a > ClassDefNotFound error can be thrown. > This error bubbles up from BundleComponentActivator.initialEnable to the > AbstractExtender.createExtension method, where it is logged. The problem with > this is, that the BundleComponentActivator has registered all the components > of the bundle with the ComponentRegistry but when the error is thrown, the > BundleComponentActivator is not registered in Activator's m_componentBundles > map. > So, when the bundle is stopped, the components registered with the > ComponentRegistry stay registered and will never be cleaned away. > The simple fix is to catch Throwable in the > BundleComponentActivator.initialEnable method and log it. The single > component failing to load will stay inactive but the rest of the component > registration will continue unaffected. > Background: We have a situation where a bundle is compiled against an API > bundle whose exported API is not properly versioned. So the OSGi framework > happily wires the bundle to the older API bundle version but one of the > components fails to load due to missing API. -- This message was sent by Atlassian JIRA (v6.3.4#6332)