gpt4 book ai didi

java - 如何调用多个OSGi模块

转载 作者:行者123 更新时间:2023-12-02 04:05:08 25 4
gpt4 key购买 nike

我有一个包含三个模块的 OSGi 项目:Core、A 和 B。想法是在 Core 启动时启动/运行 A 和 B。

目前我使用的方法无法在现实生活中的应用程序中工作:

mvn clean install Core.jar
mvn clean install A.jar
mvn clean install B.jar

然后

D:\felix-framework-5.4.0>java -jar bin\felix.jar

install file:/"D:/workingDir/Sample~1/Eclipse/Core-1.0.jar"
install file:/"D:/workingDir/Sample~1/Eclipse/A-1.0.jar"
install file:/"D:/workingDir/Sample~1/Eclipse/B-1.0.jar"

我怎样才能实现这个目标。我可以使用任何框架/OSGi 服务器来实现这个想法吗?哪些研究主题可以帮助查找此内容?

我希望将 Core 放在根目录中,然后将其他插件包放在插件文件夹中。如何从核心动态查找并调用plugins文件夹中的模块?

OSGi-Project
+ Core.jar
+ plugins
+ A.jar
+ C.jar
+ D.jar
+ ****.jar
<小时/>

更新

场景

我正在开发的应用程序是一个 OSGi 独立桌面应用程序。例如,Core 将在左侧保留一个 Pane (left-pane)。 left-pane 将接受来自任何实现名为 LeftPane 接口(interface)的模块的节点A 实现 LeftPane 接口(interface)。每当启动 Core 时,它​​都应该扫描一个文件夹(本例中为 OSGi-Project),并自动启动其中的所有 bundle ,包括 A,它将继续填充左侧 Pane 。

最佳答案

感谢您的澄清。据我所知,您并不真正需要动态加载或扫描。相反,我建议您让插件模块通过接口(interface) LeftPane 实现服务并将其发布到 OSGi 注册表中。

然后,您的核心模块可以监听实现 LeftPane 的所有服务并从中填充 UI。

为此,您可以利用围绕服务的 OSGi API,甚至更好地使用 DS 或蓝图等框架。

关于java - 如何调用多个OSGi模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34379140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com