java - 在运行时修改 Bundle Manifest

标签 java runtime osgi bundles

是否有可能(如果可以,那么安全)在其生命周期中的任何时候修改 bundle 的 MANIFEST(即可能仅在 INSTALLED 和 RESOLVED 之间)。

我猜另一种提问方式是,

INSTALLED 之后,RESOLVED 之前,MANIFEST 是否已经完全评估(即,进一步的更改将被忽略)以致于更改为时已晚?

如果以上所有内容看起来都很荒谬.. 那么我的下一个问题是,有没有人认为有可能(没有令人讨厌的框架黑客)包装 MANIFEST 决议(即类加载器步骤以获取 META-INF/MANIFEST.来自 bundle 的 MF)和自定义实现。

背景:考虑一个不基于 OSGi 的现有模块化框架,我想通过提供部署现有“插件”基调的能力来简化向 OSGi 的迁移无需修改,并在运行时执行分析(“插件”定义明确,因此映射不应该很难),将它们转换为真正的 OSGi 包,使用 BND 运行时操作生成一个 MANIFEST 来代替可能不存在或非 osgi-bundle MANIFEST。

希望这是有道理的(@njbartlett!)

最佳答案

为什么不定义一个 URL 方案来改变 list 作为安装/更新过程的一部分?当框架通过您的 URLConnection 访问包时,您可以返回一个带有变异 list 的变异包。这基本上就是网络捆绑支持所做的,它应该也适合您。

关于java - 在运行时修改 Bundle Manifest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7379840/

相关文章:

eclipse - Eclipse 中的 CLASSPATH "bootstrap entries"和 "user entries"有什么区别?

javascript - 在 JavaScript 中,哪些代码在运行时执行,哪些代码在解析时执行?

dependencies - Tycho 下载依赖但未能解决它

java - Fabric8:获取 OSGi 包中的当前配置文件

java - 在 OSGi 中,传递服务引用是一种好的做法还是应该由 bundle 自行查找?

java - 使用 Jackson 反序列化时禁用标量到字符串的转换

java - ExecutorService 在频繁关闭后导致内存不足异常

java - 为什么 middle.next 设置为 null?

java - 应用程序在 Websphere Liberty Profile 上神秘重启

objective-c - Objective-c 对象是否都是相同类型的 C 结构?