在听说过OSGi片段后,我想知道:
我可以使用片段注入补丁,即替换现有的签名捆绑包中的现有类吗?
是否有文档如何做到这一点?
答案 0 :(得分:2)
我没有使用过已签名的bundle,但是它们是一种获取片段来覆盖宿主束中的类的方法。但是你需要提前做好计划。
在你的Host Bundle中定义一个Bundle-Classpath:
Bundle-Classpath:jar-not-in-host.jar;。
此jar文件不应存在于主机中。然后你的片段可以包含一个名为jar-not-in-host.jar的jar。附加片段后,jar-not-in-host.jar中的类将在主机包的根目录中的类之前加载。
我知道不是很好,但它确实有用。
答案 1 :(得分:1)
答案是否。
OSGi片段没有自己的类加载器,它们被视为主机的一部分。他们无法注入新代码来替换现有的类。片段的常见用法是为不同的主机提供不同的实现。另一个需要其功能的捆绑包(由主机捆绑包导出)将不依赖于具体实现。
Bundle已经是OSGi的原子概念,如果你想补丁,你应该提供它的更新版本。