平台独立的OSGi控制台

时间:2012-06-05 09:18:17

标签: java console osgi platform-independent

我正在设计一个shell来管理一个应用程序。计划让下一个应用程序verison使用OSGi,但OSGi平台(Felix,Equinox,...)还没有决定。如果我们也可以使用我们的shell来管理OSGi,那就太好了。

如何以独立于平台的方式管理OSGi?你能指点我的示例代码吗?

谢谢,Ulrich

3 个答案:

答案 0 :(得分:1)

您可以结帐控制台实施例如: Apache Karaf。它是功能齐全的OSGi运行时。这是overview of the commands,您可能只选择子集。

您也可以使用运行时并使用命令扩展控制台:http://karaf.apache.org/manual/latest-2.2.x/developers-guide/extending-console.html

答案 1 :(得分:1)

事实上,您不仅可以使用karaf的控制台。您只需使用Apache Karaf作为服务器即可。只需配置设置即可将其从Felix切换到Equinox。如果你对它在实践中如何运作感兴趣,我做了一个关于Karaf的系列教程。 http://www.liquid-reality.de/display/liquid/Karaf+Tutorials

答案 2 :(得分:0)

是的,当然可以以独立于平台的方式管理OSGi。 这完全取决于您准备好自己实施多少管理。

OSGi API可让您访问所有内容,只需设计/选择shell,命令格式等。

您是否希望基于命令提示符,基于Web的命令提示符或远程管理协议与某些后端管理服务器一起使用?

1)让我们从功能开始吧。 您的shell将作为捆绑包实现。您可以使用此捆绑包的BundleContext来访问其他捆绑包对象。 通过它们你可以:

  • 安装,启动,停止,更新捆绑包:

BundleContext.installBundle(String) - 从指定位置安装捆绑包 string(应该是一个URL)。

BundleContext.getBundles( )
Bundle.start()
Bundle.update( InputStream input )
  • 检查捆绑包,捆绑版本,导出/导入的包,注册服务

  • 从OSGi服务注册表中,您可以获得ConfigurationAdmin服务,通过该服务可以列出软件包的配置并进行更改

  • 从注册表中,您还可以获取LogService,以阅读日志

  • 从StartLevel服务中,您可以在启动fw时控制捆绑包的启动顺序

等等

2)您希望如何使上述信息可访问? 如果需要基于命令的控制台,可以使用系统输出编写一个。 You can check this implementation for ideas

如果您想要基于Web的,保持平台无关的最简单方法是编写标准servlet并在标准OSGi HTTP服务中注册它。然后,相关网页将调用上述功能。

如果您需要远程管理协议,可以映射到许多不同的可能性。例如,检查OSGi DMT服务,该服务映射到OMA DM规范,该规范可轻松映射到TR-069管理协议。有现有的实现。

所有这些都完全独立于Felix,Equinox等,并且可以在其中任何一个以及任何其他OSGi fw上运行。