我有一个在OSGi/Equinox中运行的Java应用程序。从这个应用程序中,我需要生成在OSGi/Equinox中运行的Java子进程(例如通过ProcessBuilder.start()
),以正确处理类加载。子进程将需要多个bundle,所以我希望在“子进程”Equinox容器中安装这些bundle的方法相当动态,例如通过阅读feature.xml文件。
我已经通读了启动here的程序,但我不知道Equinox如何适应它。我也考虑过做一些类似this的事情,但它不会是非常动态的,特别是当子流程的入口点包需要多个其他包时,这需要更多的包,等等。
那么,我怎样才能通过一种相当动态的方式将bundle加载到容器中来生成一个在OSGi/Equinox中运行的子流程呢?
注意事项:我需要使用单独的进程。子进程将使用使用全局变量的JNA本机库进行数据处理(我不能修改本机库)。因此,为了能够并发处理不同的数据,数据处理需要在单独的进程中运行。
2条答案
按热度按时间xt0899hw1#
您可以使用Equinox Launcher API。以下是如何使用Equinox Launcher API启动带有一组捆绑包的Equinox新示例的示例:`
字符串
`
hts6caw32#
Equinox是Eclipse中使用的OSGi(Open Services Gateway Initiative)框架实现。在Equinox中运行带有动态捆绑包安装的子流程涉及与Equinox OSGi框架交互以动态安装和启动捆绑包。