我目前正在开发一个插件系统,我在我的应用程序中嵌入了 apache felix。插件本身就是 OSGi 包。到目前为止,部署捆绑包工作得很好,但我无法与我的捆绑包/插件交互。我尝试了两种方法:
- 在我的插件中注册服务“插件”,并在我的“主机”应用程序中使用服务侦听器与插件交互。
未调用服务侦听器,并且我无法转换返回的 Plugin 对象,因为我的 Host 应用程序的 Plugin.class 与捆绑包内的 Plugin.class 不同。
- 在宿主应用程序中注册“PluginManager”并将该管理器加载到包中。
在这种情况下,由于此类“重复”问题,我再次无法转换服务类。
我理解为什么这些类是“重复的”,但我不知道该怎么做。
我目前的设置:
- plugin-api maven 模块:提供插件接口
- app maven 模块:包含嵌入 Apache Felix 的应用程序
- dummy 插件仅依赖于 plugin-api
我的设置结构有问题吗?如何在不造成课堂混乱的情况下访问主机服务?我是否应该创建另一个模块来编译我的插件,但它被排除在包之外,然后通过 FRAMEWORK_SYSTEMPACKAGES_EXTRA 在主机上提供?