Stephan Siano created CAMEL-19794:
-------------------------------------

             Summary: OsgiEventAdminNotifier not getting registered
                 Key: CAMEL-19794
                 URL: https://issues.apache.org/jira/browse/CAMEL-19794
             Project: Camel
          Issue Type: Bug
          Components: camel-blueprint
    Affects Versions: 3.21.0, 3.14.9
            Reporter: Stephan Siano
            Assignee: Grzegorz Grzybek


After an update from Camel 2.x to Camel 3.14.7 we noticed that the 
OsgiEventAdminNotifier is not getting registered in Camel 3 blueprint contexts 
(the same issue exists in all newer Camel 3 versions).

The reason for this is in the following code in 
org.apache.camel.blueprint.CamelContextFactoryBean:
{code}
        try {
            
getClass().getClassLoader().loadClass("org.osgi.service.event.EventAdmin");
            getContext().getManagementStrategy().addEventNotifier(new 
OsgiEventAdminNotifier(bundleContext));
        } catch (Throwable t) {
            // Ignore, if the EventAdmin package is not available, just don't
            // use it
            LOG.debug("EventAdmin package is not available, just don't use it");
        }
{code}
The problem is that the camel-osgi-core bundle (where the class 
OsgiEventAdminNotifier is located) has an optional import for 
org.osgi.service.event, but the camel-blueprint bundle where the 
CamelContextFactoryBean is located does not have this import.

I see two solutions for the issue:
either add the line 
org.osgi.service.event;resolution:=optional,
to camel.osgi.import in the camel-blueprint pom
or change the above code to use the classloader of the camel-osgi-core bundle 
to load the EventAdmin class in the code above:
{code}
OsgiEventAdminNotifier.class.getClassLoader().loadClass("org.osgi.service.event.EventAdmin");
{code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to