osgi - 将参数传递给 OSGi 应用程序

标签 osgi command-line-arguments

我所在的团队正在将一套 Java 应用程序转换为使用 OSGi。以前,我们使用自己的自制类加载器系统,该系统与 OSGi 有一些相似之处,但这只不过是麻烦;我们希望通过转向使用像 Apache Felix 这样的系统,我们可以拥有一个运行得更好的系统,同时需要我们的整体支持工作更少。

我们一直在将构成应用程序的模块转换为 OSGi 包,使用 Spring DM 基本上是一件轻松的事情。 然而,我们——好吧,我在团队中负责——需要一些方法来通过像 Maven(或 Jenkins)这样的工具从中可靠地生成应用程序;绝对需要有一个可再分发的应用程序安装程序来为用户安装所有内容。 (我们非常了解我们的用户群;他们想要一个简单的安装,在安装后不会下载额外的东西,好吧,除非他们决定安装额外的插件,否则不会,但那是另一回事了。)我们不希望必须构建应用程序在控制台手动或使用 GUI,因为手动过程很可能会遇到愚蠢的人为错误;我们希望得到正确的调试一次

此外,我们套件中的一些应用程序必须“像传统应用程序一样”使用命令行参数。 (有问题的应用程序在内部进行重要处理,有时需要从其他进程调用,例如门户网站。)我知道这会导致默认的 Felix main 出现一些问题,它只允许命令行出于自身目的的参数,而不是默认提供一种将这些参数导出到 bundle 的方法。 (我知道我们可以用 shell 脚本包装东西,以便将它们作为属性传递,但是......ewwww...... 必须有更好的方法。我怀疑制作自定义 main 导出提供对命令行参数的访问的服务是最好的方法。)

所以,我的问题是自动构建整个 OSGi 应用程序的推荐方法是什么,我是否使用合理的方法来提供命令行参数?

最佳答案

我猜你最好的选择是编写你自己的 main 来专门做你想做的事情。从 OSGi R4.2 开始,启动 API 是标准的并且非常简单。您可以从 Felix 的 Main 开始,因为它已经是通用的(即,它可以启动任何 R4.2 框架,例如 Felix 或 Equinox)并根据需要进行更改。

如果命令行参数表示配置属性,您可以将它们推送到配置管理中。否则,只需按照您认为合适的方式展示它们即可。

关于osgi - 将参数传递给 OSGi 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7132866/

相关文章:

javascript - 如何将命令行参数传递给 Node.js 程序?

java - 如何构建服务以及如何在 CQ5 中激活服务

c# CommandLine.Parser - 使用接受 Action<ParserSettings> 的构造函数

通过 shell 脚本的 Java 命令行参数

maven - OSGi 和 Maven 检测私有(private)包的使用

c - C中的执行时间差异

python - 使用 python 对命令行参数和选项进行高效且完整的输入检查

java - 在 JUnit 测试的上下文中使用 OSGi 声明式服务

java - 如何在多个 osgi 包之间共享资源

java - OSGI 传递依赖级别