【问题标题】:What is the different Between 'Bind' and 'Activate“绑定”和“激活”有什么区别
【发布时间】:2012-05-24 21:09:44
【问题描述】:

我开始在 eclipse 中使用 OSGI。在声明式服务下,我发现一旦服务被激活,就会执行两种方法。即激活和绑定.. 这两者有什么区别?

如果我想在我的服务启动时执行某些操作,是放在Bind方法还是Activate方法中?

【问题讨论】:

    标签: eclipse osgi declarative-services


    【解决方案1】:

    Bind 方法用于将服务引用注入到组件实例中,即组件所依赖的服务。当组件满足时,激活方法(如果已声明)在激活过程的最后一步调用。

    所以,我想您想在 activate 方法中编写您的操作,因为此时您的所有强制依赖项都已解决。

    另请注意,声明式服务组件本身不是服务,但它可能提供服务。

    【讨论】:

    • 谢谢一堆,我想我明白了... :)
    • 在引用了多个服务的捆绑包中,我了解在必要的服务可用并绑定后调用 activate 方法。但是在 service provider bundle 中,activate 方法是什么时候调用的?
    【解决方案2】:

    activate 方法在您的组件被激活时被调用。因此,这是执行任何初始化活动的好时机。对于组件引用的每个服务,都会调用一次 bind 方法。因此,如果您的组件引用了LogService,您的LogServicebind 方法将被调用,每个LogService 对象都绑定到您的组件。然后该方法可以将LogService 存储在一个字段中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 2011-01-03
      • 1970-01-01
      • 1970-01-01
      • 2013-05-23
      • 2012-12-02
      相关资源
      最近更新 更多