[
https://issues.apache.org/jira/browse/CAMEL-19794?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Claus Ibsen resolved CAMEL-19794.
---------------------------------
Fix Version/s: 3.22.0
Resolution: Fixed
> camel-karaf - 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.14.9, 3.21.0
> Reporter: Stephan Siano
> Priority: Minor
> Fix For: 3.22.0
>
>
> 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)