首页 文章

控制osgi声明性服务的实例化

提问于
浏览
0

我正在寻找一种简单的方法来控制声明式服务的实例化 .

我想要的是像工厂一样被要求返回组件的实例,但我可以控制实例化 .

目前我刚刚找到了ComponentFactory,我可以用给定的字典调用newInstance . 但我真正想要的是这样的,假设IComponent是声明性服务接口而MyComponent是实现类

public class MyComponentFactory implements ? {

   public IComponent newInstance() {
       return new MyComponent("firstParameter", "secondParameter");
   }
}

使用声明性服务是否有类似这样的事情,或者我是否需要在捆绑激活码中使用我自己的服务注册?

提前致谢

2 回答

  • 0

    DS不提供您正在寻找的实例创建间接级别 . DS将始终使用public no-args构造函数,然后调用指定的activator方法来完成实例初始化 .

  • 4

    这种服务实例化控制的一种替代方案是使用DS和CM的组合 .

    您必须在DS xml中设置configuration-policy =“require”并使用CM创建一个配置实例,该实例将用于将包含您需要的所有属性的字典(当然只有DS支持的类型)传递给创建的服务实例 . 您甚至可以使用属性文件和Felix File Install进行配置 .

    如果这还不够,那么您可以使用另一种方法来跟踪新创建的服务,并在使用CM添加配置后立即调用setup(args)方法 .

相关问题