如何在 AEM 中调用另一个 Bundle 的函数?
How can I call function of another Bundle in AEM?
我有两个 bundle,X 和 Y.Both 已经安装并作为 bundle 在 OSGi.Function Bundle X 中的 sayHello 和 Bundle 中的函数 writeHello Y.I 需要调用 sayHello 函数来自 Bundle Y,我将在 Bundle Y 中使用 writeHello 函数写入返回的字符串。
你能说这可能吗?如果可能的话,如何部署这个逻辑?
在我看来,我有一些例子;
我将在 Bundle Y 的 pom 中添加 Bundle X 的依赖项,但是添加依赖项后我怎么能看到函数 sayHello?
谢谢..
有两种方法可以访问另一个包的功能。对于这两种方式,您需要在提供 class 的捆绑包中使用 Export-Package,并为您要使用的外部 classes 包提供 Import-Package。
创建 class 的实例并使用它
如果您要使用的 class 易于设置并且不需要解耦,请使用此方法。这是简单库的典型案例。
将功能发布为 OSGi 服务并绑定服务
如果难以实例化 class 并且您不希望客户端参与其中,请使用此方法。如果您想与实现分离,服务方法也很有意义。为此,您需要为该功能创建一个接口并使用该接口发布服务。然后客户端可以通过仅指定接口来绑定服务。
我有两个 bundle,X 和 Y.Both 已经安装并作为 bundle 在 OSGi.Function Bundle X 中的 sayHello 和 Bundle 中的函数 writeHello Y.I 需要调用 sayHello 函数来自 Bundle Y,我将在 Bundle Y 中使用 writeHello 函数写入返回的字符串。 你能说这可能吗?如果可能的话,如何部署这个逻辑? 在我看来,我有一些例子; 我将在 Bundle Y 的 pom 中添加 Bundle X 的依赖项,但是添加依赖项后我怎么能看到函数 sayHello?
谢谢..
有两种方法可以访问另一个包的功能。对于这两种方式,您需要在提供 class 的捆绑包中使用 Export-Package,并为您要使用的外部 classes 包提供 Import-Package。
创建 class 的实例并使用它 如果您要使用的 class 易于设置并且不需要解耦,请使用此方法。这是简单库的典型案例。
将功能发布为 OSGi 服务并绑定服务 如果难以实例化 class 并且您不希望客户端参与其中,请使用此方法。如果您想与实现分离,服务方法也很有意义。为此,您需要为该功能创建一个接口并使用该接口发布服务。然后客户端可以通过仅指定接口来绑定服务。