【发布时间】:2010-10-28 14:11:03
【问题描述】:
谁能给我一个如何使用osgi框架类的例子?我不知道如何使用这些类...
BR,
马库斯
【问题讨论】:
-
重复:stackoverflow.com/questions/4673406/… 我会说,链接到问题的已接受答案也更适合作为此问题的答案,即此页面上列出的那些。
谁能给我一个如何使用osgi框架类的例子?我不知道如何使用这些类...
BR,
马库斯
【问题讨论】:
我最近创建了一个关于如何在 Java 中嵌入 Equinox OSGi 运行时的简单概念验证。详情请关注我在 Github 的项目https://github.com/sarxos/equinox-launcher
【讨论】:
在 OSGi 4.1 中,这是标准化的。看看http://njbartlett.name/2011/03/07/embedding-osgi.html,它解释了如何嵌入任何 OSGi 容器。
【讨论】:
这取决于您使用的 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);
您需要一些属性来配置框架。您可以看到所有记录在案的属性here。一旦你调用启动,你收到的 BundleContext 就是系统包上下文,所以你可以从这里安装/启动/停止包。
如果您设置了所有属性,则不必将任何参数传递给 startup()。
您可以从Equinox website 下载所有 Equinox 和其他捆绑包。
【讨论】:
规范没有定义如何实例化、配置和启动 OSGi 框架。因此,从您常用的 Java 代码运行 OSGi 框架总是特定于给定的框架实现(Equinox、Felix、Knopplerfish 等)。
将Apache Felix(一个开源OSGi 框架)嵌入到您的应用程序中相当容易。
更多信息请参见http://felix.apache.org/site/launching-and-embedding-apache-felix.html。
【讨论】:
查看项目equinox-headless-service。它有启动Equinox的代码。
【讨论】: