我正在Eclipse中开发server-allinone。我想做一些自定义包是Target上运行的基本包的一部分。有办法从配置中做到这一点吗?
从概念上讲,在目标上运行的内容由三个逻辑部分组成:
- 实际的OSGi框架实现(Apache Felix, Equinox,…)
- Apache ACE提供的"管理代理"。
- 所有组成你的应用的bundle。
任何属于#3的部分都可以通过ACE轻松安装、更新和卸载。ACE还有一种机制,允许管理代理(#2)更新自身(这显然是一个特例)。这就是ACE停止的地方,它没有内置机制来更新#1,尽管也有一些关于提供机制的讨论。你必须在某个点上划清界限,因为除此之外,你还可以问自己谁来更新JVM、操作系统和引导加载程序。
不管怎样,回到你的问题。如果你想让那些自定义bundle成为目标上运行的基本bundle的一部分,从概念上讲,它们会成为框架的一部分,而你在ACE中没有办法更新它们。如果可以,只需创建一个自定义启动程序,除了安装管理代理之外,还安装这些包。如果不可以,则需要将这些包添加到实际的管理代理包中,以便它们成为其中的一部分。这样你就可以将它们作为bundle的一部分进行更新。但是,我想问您为什么这些包不能成为应用程序的一部分?它们必须预先安装(可更新或不可更新)是否有特殊原因?