gpt4 book ai didi

java - 以编程方式启动 OSGi(Equinox)?

转载 作者:IT老高 更新时间:2023-10-28 21:21:59 25 4
gpt4 key购买 nike

我希望能够轻松启动 OSGi 框架(最好是 Equinox)并从 java main 加载我的 pom 中列出的任何包。

这可能吗?如果有,怎么做?

似乎 pax 工具可以做到这一点,但我似乎找不到任何说明这一点的文档。我知道我可以像这样启动 Equinox:

BundleContext context = EclipseStarter.startup( ( new String[] { "-console" } ), null );

但我想做更多 - 就像我说的:加载更多包,也许启动一些服务等。

最佳答案

任何 OSGi 框架(R4.1 或更高版本)都可以使用 FrameworkFactory API 以编程方式启动:

ServiceLoader<FrameworkFactory> ffs = ServiceLoader.load(FrameworkFactory.class);
FrameworkFactory ff = ffs.iterator().next();
Map<String,Object> config = new HashMap<String,Object>();
// add some params to config ...
Framework fwk = ff.newFramework(config);
fwk.start();

OSGi 框架现在正在运行。由于 Framework 扩展了 Bundle 您可以调用 getBundleContext 并调用所有常规 API 方法来操作 bundle 、注册服务等。例如

BundleContext bc = fwk.getBundleContext();
bc.installBundle("file:/path/to/bundle.jar");
bc.registerService(MyService.class.getName(), new MyServiceImpl(), null);
// ...

最后你应该等待框架关闭:

fwk.stop();
fwk.waitForStop(0);

重申一下,这种方法适用于任何 OSGi 框架,包括 Equinox 和 Felix,只需将框架 JAR 放在类路径中即可。

关于java - 以编程方式启动 OSGi(Equinox)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4673406/

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