Monday, November 10, 2014

Referencing the services between OSGI bundles – AEM

Referencing the services between OSGI bundles – AE

This post explains how to refer the services between OSGI bundles in Adobe Experience Manager.

Export-Package:

Bundles may export zero or more packages from the JAR to be consumable by other bundles. The export list is a comma-separated list of fully-qualified packages, often with a version attribute. If not specified, the version defaults so 0.0.0.

In the target bundle the packages contains the required services and the classes exposed to the other bundles should be exported.


Import-Package 

The Import-Package header is used to declare dependencies at a package level from the bundle. At runtime, the bundle will be wired up with whatever (compatible) bundle offers the package.

In the source bundle the packages contains the required services and classes referred from other bundle should be imported.


Approaches for Reference

The following two approaches can be used to refer the services from other bundle.
Through Reference
@Reference
private CommerceServiceFactory sFactory;

Through bundle context
BundleContext bundleContext = FrameworkUtil.getBundle(this.getClass()).getBundleContext();
CommerceServiceImpl factoryFromBundle=(CommerceServiceImpl)bundleContext.getService(bundleContext.getServiceReference(CommerceServiceFactory.class)).getCommerceService();

No comments:

Post a Comment