【发布时间】:2014-08-23 08:05:39
【问题描述】:
OSGi-Bundle 在重新启动时是否考虑其更改的类文件?我的意图是停止一个 Bundle,更改它的 java 文件,编译它,然后重新启动该包。它是否包含新类或者我需要以某种方式更新捆绑包?
这两个线程让我想出了这个想法: Editing/Modifying a .java file programmatically? (not the .class file) 和 How do I programmatically compile and instantiate a Java class?
很高兴得到帮助。谢谢。
【问题讨论】:
-
您为什么想要或需要这样做?按照其他人的方式进行操作,使用semantic versioning 并安装新版本,卸载旧版本并刷新。 (如果你使用的是 Karaf 和 Maven,你可以简单地 watch 捆绑包,它会随着它的变化自动更新)。
-
我的项目的目标是自动执行此操作。由于性能要求,动态映射器类是自动构建的。我知道这是一个非常特殊的情况,但对于这项工作来说是必要的。每次在基于事件的系统中有新的聚会时,都需要更新类...您不想手动执行此操作...您的语义版本控制链接给了我一个 404 btw。
-
回复:404,www.osgi.org/wiki/uploads/Links/SemanticVersioning.pdf。如果我担心性能,我不会选择需要在运行时修改和编译的设计。
-
“每次在基于事件的系统中出现新的聚会时,都需要更新类” 这是一个主要的设计问题,您的代码违反了Open/Close Principle。
-
好吧,也许是有误会。系统启动后加入的人不多。因此,使用类中的方法进行映射比每次发生事件时从数据库中查找信息要快...无论如何,您会对您的方法感兴趣...
标签: class compilation osgi osgi-bundle