谁能给我一个如何使用osgi框架类的例子?我不知道如何使用这些类...
BR,
马库斯
这取决于您使用的 OSGi 实现。我使用 Eclipse Equinox 并从常规 java 类中启动框架。Eclipse jar(称为 org.eclipse.osgi_longversion.jar)有一个名为 org.eclipse.core.runtime.adaptor.EclipseStarter 的类。这将启动您的 OSGi 框架。
Properties props = new Properties();
// add some properties to config the framework
EclipseStarter.setInitialProperties(props);
BundleContext context = EclipseStarter.startup(new String[]{},null);
您需要一些属性来配置框架。您可以在此处查看所有记录的属性。一旦你调用启动,你收到的 BundleContext 就是系统包上下文,所以你可以从这里安装/启动/停止包。
如果设置了所有属性,则不必将任何参数传递给 startup()。
您可以从Equinox 网站下载所有 Equinox 和其他捆绑包。
在 OSGi 4.1 中,这是标准化的。看看http://njbartlett.name/2011/03/07/embedding-osgi.html,它解释了如何嵌入任何 OSGi 容器。
该规范没有定义如何实例化、配置和启动 OSGi 框架。因此,从您常用的 Java 代码运行 OSGi 框架总是特定于给定的框架实现(Equinox、Felix、Knopplerfish,...)。
将Apache Felix(一个开源 OSGi 框架)嵌入到您的应用程序中相当容易。
有关详细信息,请参阅http://felix.apache.org/site/launching-and-embedding-apache-felix.html。
See the project equinox-headless-service. It has code to launch equinox.
我最近创建了一个关于如何在 Java 中嵌入 Equinox OSGi 运行时的简单概念验证。详情请关注我在 Github 中的项目https://github.com/sarxos/equinox-launcher