Expand my Community achievements bar.

Guidelines for the Responsible Use of Generative AI in the Experience Cloud Community.
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