[ 
https://issues.apache.org/jira/browse/FELIX-5613?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15980158#comment-15980158
 ] 

ASF GitHub Bot commented on FELIX-5613:
---------------------------------------

GitHub user neilxb opened a pull request:

    https://github.com/apache/felix/pull/105

    FELIX-5613 - SCR bundle fails to start without Config Admin

    RegionConfigurationSupport does not need to directly implement 
ConfigurationListener. By registering an anonymous inner class, the class 
loading errors are isolated to this class and do not prevent the bundle from 
starting.
    
    **Testing Note**
    
    I tried **very** hard to write a PAX Exam integration test that would prove 
SCR works when there is no exporter of `org.osgi.service.cm`, but I believe 
this is impossible due to a limitation of PAX Exam. The testing framework 
always contains the OSGi Compendium bundle version 4.2.0 
(`org.osgi:org.osgi.compendium:4.2.0`) because it is a dependency of PAX. 
Compendium exports `org.osgi.service.cm` version 1.3.0. It cannot be removed as 
far as I can tell.
    
    I have verified manually that SCR works in both a framework with Config 
Admin and a framework without Config Admin. However without an automated test 
it is always possible somebody will make a change that makes SCR dependent on 
Config Admin once again. I would suggest migrating to bnd-testing-maven-plugin 
as this does not pollute the testing framework with dependencies.

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/njbartlett/felix FELIX-5613

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/felix/pull/105.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #105
    
----
commit 2b8dbb83289bf37bb4563b30c05a826fd777ea71
Author: Neil Bartlett <[email protected]>
Date:   2017-04-22T18:05:53Z

    FELIX-5613 - SCR bundle fails to start without Config Admin
    
    RegionConfigurationSupport does not need to directly implement Config-
    uartionListener. By registering an anonymous inner class, the class
    loading errors can be isolated to this class rather than bubbling up
    to the bundle activator.

----


> SCR bundle fails to start without Config Admin
> ----------------------------------------------
>
>                 Key: FELIX-5613
>                 URL: https://issues.apache.org/jira/browse/FELIX-5613
>             Project: Felix
>          Issue Type: Bug
>          Components: Declarative Services (SCR)
>            Reporter: Neil Bartlett
>
> SCR 2.0.8 still imports package {{org.osgi.service.cm}} as optional, but it 
> does not start when there is no export of that package available.
> I know that SCR should be able to work without a Config Admin implementation 
> but it clearly does not work at all without an import of the API package, 
> therefore it should not be marked as an optional import.
> Stack trace:
> {noformat}
> ! Failed to start bundle org.apache.felix.scr-2.0.8, exception activator 
> error org/osgi/service/cm/ConfigurationListener from: 
> java.lang.ClassLoader:defineClass1#-2
> org.osgi.framework.BundleException: Activator start error in bundle 
> org.apache.felix.scr [5].
>         at org.apache.felix.framework.Felix.activateBundle(Felix.java:2276)
>         at org.apache.felix.framework.Felix.startBundle(Felix.java:2144)
>         [... snip ...]
> Caused by: java.lang.NoClassDefFoundError: 
> org/osgi/service/cm/ConfigurationListener
>         at java.lang.ClassLoader.defineClass1(Native Method)
>         at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
>         at 
> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.defineClass(BundleWiringImpl.java:2370)
>         at 
> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.findClass(BundleWiringImpl.java:2154)
>         at 
> org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1542)
>         at 
> org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:79)
>         at 
> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2018)
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>         at org.apache.felix.scr.impl.Activator.doStart(Activator.java:157)
>         at 
> org.apache.felix.utils.extender.AbstractExtender.start(AbstractExtender.java:114)
>         at org.apache.felix.scr.impl.Activator.restart(Activator.java:142)
>         at 
> org.apache.felix.scr.impl.config.ScrConfigurationImpl.configure(ScrConfigurationImpl.java:196)
>         at 
> org.apache.felix.scr.impl.config.ScrConfigurationImpl.start(ScrConfigurationImpl.java:117)
>         at org.apache.felix.scr.impl.Activator.start(Activator.java:110)
>         at 
> org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:697)
>         at org.apache.felix.framework.Felix.activateBundle(Felix.java:2226)
>         ... 11 more
> Caused by: java.lang.ClassNotFoundException: 
> org.osgi.service.cm.ConfigurationListener not found by org.apache.felix.scr 
> [5]
>         at 
> org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1574)
>         at 
> org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:79)
>         at 
> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2018)
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>         ... 27 more
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to