gpt4 book ai didi

java - 如何使用 Apache Felix 过滤插件文件夹中的 OSGi bundle

转载 作者:行者123 更新时间:2023-12-01 10:23:55 24 4
gpt4 key购买 nike

我们正在从给定文件夹加载带有 Apache Felix 及其子项目 Apache File Install 的 OSGi bundle 。在我们的例子中,这个文件夹中可能会包含一个 Import-Package ,但它不在容器的类路径上。这会产生错误日志消息(每 2 秒一次)。 (这没关系,不应加载 bundle )。

我的问题是:是否可以在安装之前过滤 bundle ?

我检查了 org.apache.felix.fileinstall.internal.DirectoryWatcher 的实现,并发现我可能需要一个 org.apache.felix.fileinstall.ArtifactListener :

final ArtifactListener myListener = new ArtifactListener() {
@Override
public boolean canHandle(final File artifact) {
return bundleFullfillsPrecoditions(artifact);
}
};

不幸的是,我无法正确注册该监听器(并且 canHandle 从未被调用过)。我尝试将其注册为 BundleContext 上的服务:

//Initialize Felix Framework
org.osgi.framework.launch.Framework osgiFramework = this.createFramework(configuration);
osgiFramework.init();
osgiFramework.start();

//Register Listener?
osgiFramework.getBundleContext().registerService(ArtifactListener.class, myListener, null);

//Start File Install Bundle
org.osgi.framework.Bundle pluginFolderWatcher = osgiFramework.getBundleContext().installBundle(getFolderWatcherJarPath());

pluginFolderWatcher.start();

也许是方法不对,或者我错过了一些东西。你有想法吗?提前致谢。

最佳答案

唯一真正的答案是:不要将 FileInstall 用于生产用例,而是编写自己的管理代理来执行您真正想要的操作。安装 bundle 并不那么难...

关于java - 如何使用 Apache Felix 过滤插件文件夹中的 OSGi bundle ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35435460/

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