如何在通常的java代码中运行OSGi框架?

任何人都可以给我一个如何使用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); 

您需要一些属性来配置框架。 您可以在此处查看所有记录的属性。 一旦调用startup,您收到的BundleContext就是System Bundle上下文,因此您可以从此处安装/启动/停止bundle。

如果设置了所有属性,则不必将任何参数传递给startup()。

您可以从Equinox网站下载所有Equinox和其他捆绑包。

在OSGi 4.1中,这是标准化的。 请查看http://njbartlett.name/2011/03/07/embedding-osgi.html ,其中介绍了如何嵌入任何OSGi容器。

请参阅equinox-headless-service项目。 它有启动equinox的代码。

该规范没有定义如何实例化,配置和启动OSGi框架。 因此,从通常的Java代码运行OSGi框架总是特定于给定的框架实现(Equinox,Felix,Knopplerfish,…)。

将Apache Felix (一个开源OSGi框架)嵌入到您的应用程序中相当容易。

有关详细信息,请参阅http://felix.apache.org/site/launching-and-embedding-apache-felix.html 。

请参阅http://www.theserverside.com/tt/articles/article.tss?l=OSGiforBeginners

我最近创建了一个简单的概念validation,说明如何在Java中嵌入Equinox OSGi运行时。 有关详细信息,请关注我在Github的项目https://github.com/sarxos/equinox-launcher