Osgi 如何调用AEM中另一个包的函数?

Osgi 如何调用AEM中另一个包的函数?,osgi,adobe,bundle,aem,Osgi,Adobe,Bundle,Aem,我有两个bundle,X和Y。它们都作为bundle安装并在OSGi上激活。bundle X中的函数sayHello和bundle Y中的函数writeHello。我需要从bundle Y调用sayHello函数,我将使用bundle Y中的writeHello函数写入返回的字符串。 你能说这是可能的还是不可能的?如果可能的话,如何部署这个逻辑? 在我的脑海里,我有一些东西,例如; 我将在Bundle Y的pom中添加Bundle X的依赖项,但在添加依赖项之后,如何才能看到函数sayHello

我有两个bundle,X和Y。它们都作为bundle安装并在OSGi上激活。bundle X中的函数sayHello和bundle Y中的函数writeHello。我需要从bundle Y调用sayHello函数,我将使用bundle Y中的writeHello函数写入返回的字符串。 你能说这是可能的还是不可能的?如果可能的话,如何部署这个逻辑? 在我的脑海里,我有一些东西,例如; 我将在Bundle Y的pom中添加Bundle X的依赖项,但在添加依赖项之后,如何才能看到函数sayHello


谢谢。

有两种方法可以访问另一个捆绑包的功能。对于这两种方法,您都需要在包中提供类的导出包和要使用的外部类的导入包

  • 创建类的实例并使用它 如果要使用的类易于设置且不需要解耦,请使用此方法。这是简单库的典型情况

  • 将功能发布为OSGi服务并绑定该服务 如果很难实例化该类,并且您不希望客户机参与其中,请使用这种方法。如果您希望与实现解耦,那么服务方法也是有意义的。要实现这一点,您需要为功能创建一个接口,并使用该接口发布服务。然后,客户机可以通过仅指定接口来绑定服务


  • 在发布这个问题之前,你读过关于OSGi的任何东西吗?有什么书或教程吗?你能分享一些你上面提到的例子吗。