Expand my Community achievements bar.

Dive into Adobe Summit 2024! Explore curated list of AEM sessions & labs, register, connect with experts, ask questions, engage, and share insights. Don't miss the excitement.
SOLVED

How to communicate with different OSGI bundles

Avatar

Former Community Member

Hi there,

I define a osgi bundle A, and the second osgi bundle B, now a method in the A need to call another mothod defined in the B.

private BService getBService() { BundleContext ctx = FrameworkUtil.getBundle(this.getClass()) .getBundleContext(); ServiceReference serviceReference = ctx .getServiceReference(BService.class.getName()); return BService.class.cast(ctx.getService(serviceReference)); }

In general, if bundle A want to get B instance, developer could use above code. But the question is how to make compile A bundle class successfully? because A can't reference class BService.

 

Thanks a lot.

Br,

Brian

1 Accepted Solution

Avatar

Correct answer by
Employee Advisor

Hi,

BService must be exported by Bundle B.

kind regards,
Jörg

View solution in original post

3 Replies

Avatar

Employee

You should add the B bundle as a dependency to A bundles pom file

Avatar

Level 10

In the pom.xml of Bundle A, add

           

<dependency> <groupId>[GroupId of Bundle B as mentioned in its pom.xml]</groupId> <artifactId>[ArtifactId of Bundle B]</artifactId> <version>[Version of Bundle B]</version> </dependency>

Avatar

Correct answer by
Employee Advisor

Hi,

BService must be exported by Bundle B.

kind regards,
Jörg