【问题标题】:Blueprint Osgi - Service created/destroyed ListenerBlueprint Osgi - 服务创建/销毁的监听器
【发布时间】:2015-01-26 14:22:17
【问题描述】:

可以添加一个侦听器以了解何时创建具有特定接口的 Bean 服务。而当同接口的bean被销毁???

最好的方法是什么?查看注入服务列表

<reference-list
        id="javoraiConceptProcessList"
        interface="com.api.MyTask"
        availability="optional"
        ></reference-list>

如何知道列表值何时更改?

我正在使用 Gemini Blueprint(Spring)

【问题讨论】:

    标签: osgi blueprint-osgi eclipse-gemini


    【解决方案1】:

    请参阅blueprint documentation at IBM

    这是怎么做的(下)。因此,您在将被调用的 bean 上指定绑定和取消绑定方法。

      public class ReferenceListener {
           public void bind(ServiceReference reference) {
               ...
           }
           public void bind(Serializable service) {
               ...
           }
           public void unbind(ServiceReference reference) {
               ...
           }       
       }
    
       <reference-list id=”serviceReferenceListTwo” interface=”java.io.Serializable”
                  availability=”optional”>
          <reference-listener 
                  bind-method=”bind” unbind-method=”unbind”>
              <bean class=“org.apache.geronimo.osgi.ReferenceListener”/>        
          </reference-listener>
       </reference-list>
    

    【讨论】:

    • 感谢@Christian-scheneider... 使用可序列化的绑定和取消绑定效果很好。但使用 ServiceReference 参数。在 bundleContext.getService(reference) 行中;返回 ClassCast 异常
    • 嗯 .. 听起来好像有两个 ServiceReference 实例。你能检查一下是不是这样吗?
    • 我只有一个包 org.osgi.framework 的包,这个包的符号名称为:org.apache.felix.framework。就是那个问题???在 Web 控制台中,我看到捆绑包导入了它。
    • 如果只有一个包 org.osgi.framework 那么它可能确实是实现中的一个错误,或者来自 IBM(它使用 aries)的文档不能完全适用于 Gemini。
    • 使用 Serializable 参数效果很好。但使用 ServiceReference 不起作用(ClassCastException)。到那时我将继续使用它。我希望以后不会有问题。谢谢克里斯蒂安!
    猜你喜欢
    • 2017-04-23
    • 1970-01-01
    • 2017-07-30
    • 2018-05-03
    • 1970-01-01
    • 2011-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多