使用OSGI,如何将参数从主机传递到嵌入式捆绑包

使用OSGI,如何将参数从主机传递到嵌入式捆绑包,osgi,Osgi,最后,我可能会提供一个助手,以便activator可以导入和导出服务以及有关系统的其他类型的元数据 所谓参数,我指的是一般的对象,可能是通过地图。如果一个包在安装另一个包时有一种机制向启动包发送参数,那就太好了。我想我可以在以后的捆绑包中包含一个服务,并将其用作配置服务,但这似乎有点不合理。如果您想“发送”一些配置参数到启动捆绑包,您可以使用标准的OSGi服务,如。如果您想传递任意对象,可能应该使用OSGi服务注册表 你能澄清你的问题吗?您所说的“主机”捆绑包和“嵌入式”捆绑包是什么意思?你想提

最后,我可能会提供一个助手,以便activator可以导入和导出服务以及有关系统的其他类型的元数据

所谓参数,我指的是一般的对象,可能是通过地图。如果一个包在安装另一个包时有一种机制向启动包发送参数,那就太好了。我想我可以在以后的捆绑包中包含一个服务,并将其用作配置服务,但这似乎有点不合理。

如果您想“发送”一些配置参数到启动捆绑包,您可以使用标准的OSGi服务,如。如果您想传递任意对象,可能应该使用OSGi服务注册表

你能澄清你的问题吗?您所说的“主机”捆绑包和“嵌入式”捆绑包是什么意思?你想提供什么样的“助手”?最重要的是,您希望将哪种类型的参数从一个包传递到另一个包?

要对包进行(预)运行时配置,您应该使用配置管理服务。对于POJO等,您可以遵循以下模式:

  • 捆绑包A安装并启动捆绑包B
  • 捆绑包B注册“配置”服务,例如使用接口acme.ConfigureB
  • 捆绑包A使用接口acme.ConfigureB跟踪服务
  • 每当A收到acme.ConfigureB的跟踪器回调时,它都会执行所有必要的配置

您需要在这个问题上添加更多信息,因为不清楚您想要的是什么。您是否在问如何向应用程序提供配置属性,然后使它们对OSGi捆绑包可见?我希望发送的内容是POJO和其他服务的组合。Host=提供配置的OSGi服务,Embedded=使用参数并提供其他服务的服务。似乎有点可疑,B现在只需要包含初始化自身的代码。在选择答案之前,我需要阅读并更好地理解配置管理服务。您需要知道,在OSGi捆绑包中,A或B可以以任何顺序启动。因此,可以在安装A之前安装并启动B,反之亦然。您应该始终遵循白板模式(请参阅OSGi规范):不要假设另一个包或服务在另一个包或服务之前启动,或者甚至存在。一开始有点难理解,但最终会得到更好的设计。不要进行依赖关系硬编码。请注意,如果使用声明性服务,生命周期和启动订单管理将变得非常容易。