Ben*_*Day 4 osgi fuse apache-felix apache-karaf apache-servicemix
编辑:用最新信息更新了这个问题...
我遇到了依赖功能背靠背"功能:卸载"命令的问题.OSGi回应"状态正在改变......",但通过接受其他请求,我们遇到了问题.
奇怪的是,这会导致功能卸载成功,但捆绑卸载失败.我们通过尝试适当地订购卸载请求并在步骤之间添加延迟来解决这个问题,但我希望有一个更强大的解决方案.
正如所建议的那样,我也尝试在步骤之间添加"osgi:refresh"......同样的行为.是否有另一种方法可以检测"刷新包"是否仍在运行以延迟后续请求等?
这是详细信息......
karaf @ root>功能:卸载PolicyUtil
karaf @ root>功能:卸载Policy1
karaf @ root>功能:卸载策略2
通过线程"刷新包"对包"file:/policy2.jar"进行状态更改.
karaf @根>特点:卸载策略3
在捆绑"文件:/policy3.jar"进步状态改变的线程"刷新包".
karaf @ root>功能:卸载Policy4
karaf @ root>功能:卸载Enabler1
通过线程"刷新包"对包"file:/enabler1.jar"进行状态更改.
karaf @ root> features:卸载Enabler2
状态正在通过线程"刷新包"对包"file:/enabler2.jar"进行状态更改.
之后...我们最终安装了未安装的功能(正确),但仍安装了一些软件包(不正确)
OSGi的:列表
[277] [已安装] [] [] [60] Policy2
[278] [已安装] [] [] [60] Policy3
[280] [已安装] [] [] [60] Enabler1
[281] [已安装] [] [] [60]启动器2
特点:列表
[uninstalled] [1.0] PolicyUtil repo-0
[uninstalled] [1.0] Policy1 repo-0
[uninstalled] [1.0] Policy2 repo-0
[uninstalled] [1.0] Policy3 repo-0
[uninstalled] [1.0] Enabler1 repo-0
[uninstalled] [1.0] Enabler2 repo-0
我不确定你会得到什么样的异常,但你应该知道一件事:当你使用shell命令卸载一个bundle时osgi:uninstall,你就可以有效地调用Bundle.uninstall().正如你可以在那里阅读Javadoc,这不是整个故事.
该框架支持对框架其余部分影响最小的操作,因此它可以在不删除所有相关软件包的情况下卸载软件包.如果您确实要删除所有这些,则应使用osgi:refresh命令.有关此内容的更多信息,请参阅Felix常见问题解答.
我能给出的最好建议是不发出uninstall可以互相交叉的多个请求.如果你想删除一组包,我会启动非交叉uninstall()请求,然后是一个refreshPackages().另外,我不会在单个系统中使用"常规"控制台和Karaf混合捆绑管理.
您还可以考虑使用外部管理器来安装和删除软件包.如果你想要远程管理,你可以选择Apache ACE(披露:我是Apache ACE提交者).
| 归档时间: |
|
| 查看次数: |
14619 次 |
| 最近记录: |