java - 如何从 OSGi 框架外部调用 OSGi 服务。?

标签 java osgi osgi-bundle

我计划使用 Java 并基于某些 MVC 框架开发 Web 应用程序。此应用程序应支持插件。

因此,我计划使用 OSGI 容器 (apache felix) 创建插件并将插件公开为服务(使用 OSGI 的服务注册功能)。

两者(Web 应用程序和 OSGI 服务)将在同一个 JVM 中运行。

所以,我需要有关如何在 OSGI 容器外使用 OSGI 服务(插件)的帮助?

我基本上想在 OSGI 之外调用公开的 OSGI 服务,在本例中是在我的 Web 应用程序中。

提前致谢!

最佳答案

要完成这项工作,您需要在启动 OSGi 框架的类路径中包含该服务的 api 包。然后您需要将此包导出为系统包导出。这是实现服务的 bundle 和非 OSGi 代码可以看到相同服务接口(interface)类的唯一方法。

然后您使用 FrameworkFactory 创建一个您可以启动的 Framework 实例。从框架中,您可以获得 BundleContext 并使用它来获取服务实例。

See embedding felix了解更多详情。

关于java - 如何从 OSGi 框架外部调用 OSGi 服务。?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40742715/

相关文章:

java - 如何在 OSGI 的 Activator 类中使用 Eclipse Interface Command Provider

java - OSGi 类似请求的服务? (多个实例)

osgi - Unresolved 要求 : osgi. 组件

java - 如何在程序分发中安装OSGi bundle

java - 在 AEM 6.2 中创建自定义路径浏览器谓词

java - 如何找出从出发地到目的地经纬度的持续时间?

java - Aerospike 中 batchRequests 的低性能

java - 如何根据键名设置输出文件?

java - 批量条目 0 插入借方(金额、cid、描述、did)值 ('100'、0、 'rajesh'、5)已中止 : ERROR: insert or update on table "debit"

java - 如何重命名使用Gradle工作区插件生成的包