独立于平台的 OSGi 控制台



我正在设计一个shell来管理应用程序。计划让下一个应用程序版本使用OSGi,但OSGi平台(Felix,Equinox等)尚未确定。如果我们也可以用我们的shell来管理OSGi,那就太好了。

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

谢谢,乌尔里希

您可以查看例如

Apache Karaf的控制台实现。它是功能齐全的OSGi运行时。以下是命令的概述,您可能只选择子集。

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

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

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

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

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

1)让我们从功能开始。您的 shell 本身将作为一个捆绑包实现。您可以使用此捆绑包的捆绑包上下文来访问其他捆绑包对象。通过它们,您可以:

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

BundleContext.installBundle(String) – 从指定位置安装捆绑包字符串(应该是 URL)。

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

  • 从OSGi服务注册表中,您可以获得ConfigurationAdmin服务,通过该服务您可以列出捆绑包的配置并更改它们

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

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

等等

等等

2) 您希望如何使上述信息可访问?如果需要基于命令的控制台,可以使用系统输出编写一个控制台。您可以检查此实现以获取想法

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

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

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

最新更新