java - 动态创建和配置具有依赖关系的 OSGi 服务

标签 java osgi

在我当前的应用程序中,我想通过用户界面在运行时创建和配置 osgi 服务。我研究了 OSGi 元类型规范,但它只支持简单类型属性。

所以我的问题是:不支持其他 osgi 服务等属性类型是否有充分的理由?是否有人知道现有的项目可以执行类似的操作?

更新

为了进一步澄清我的问题:

我想做的是根据软件用户的需要创建和配置新服务。如果将新的服务接口(interface)添加到系统中,这甚至应该可以工作。

假设我有一个用于发送通知的服务接口(interface)

public interface NotificationService {
    void notify(Notification n);
}

以及用于向例如发送通知的实现推特。通过元类型规范,我可以对 Twitter 服务需要用户名和密码的信息进行编码。这使我能够在运行时动态创建 UI 以创建新的 Twitter 通知服务。

这适用于简单的数据类型,但元类型规范不处理对其他服务的依赖关系。例如。假设 Notification 有文件附件,因此 Twitter 服务需要 FileUpload 服务来存储文件。

最佳答案

您始终可以使用 BundleContext#registerService() 注入(inject)新服务,但是当时的服务必须已初始化并准备好运行。您可能会发现 OSGi 4.2 规范的新蓝图服务很有用,甚至是更旧但更广泛的动态服务。

最终,这取决于你想做什么。当您说在运行时“创建”和“配置”osgi 服务时,您的意思是什么?

关于java - 动态创建和配置具有依赖关系的 OSGi 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3277005/

相关文章:

java - 标准差小数位数?

java - 使用 TCP/IP 拦截 http 文件上传

java - Struts 2 是否可以作为 OSGi 包使用?

java - 使用 Maven、OSGi 和 Bndtools

java - 列表中的 Freemarker 元素不起作用

java - 具有良好 Java 支持的最佳在线评判?

osgi - 如何从 OSGi Bundle 中使用 Java 扩展执行 XSLT 转换

java - 从不同的插件访问资源包

java - osgi bundle生命周期问题

java - Android数据绑定(bind)问题绑定(bind)适配器调用两次