Java OSGI-按服务ID查找捆绑包引用
我正在使用一个引用侦听器,在侦听器方法中使用服务、字典参数 字典有一个service.id,那么我需要该服务的捆绑包 我的问题是,拥有服务和服务ID,如何获取Bundle对象 例如:Java OSGI-按服务ID查找捆绑包引用,java,osgi,blueprint-osgi,Java,Osgi,Blueprint Osgi,我正在使用一个引用侦听器,在侦听器方法中使用服务、字典参数 字典有一个service.id,那么我需要该服务的捆绑包 我的问题是,拥有服务和服务ID,如何获取Bundle对象 例如: <reference-listener bind-method="bindFormProcessor" unbind-method="unbindFormProcessor" ref="mainSvc" >
<reference-listener
bind-method="bindFormProcessor"
unbind-method="unbindFormProcessor"
ref="mainSvc"
>
</reference-listener>
关于,您可以定义为bind方法的参数。通过使用它,您可以获得提供服务的捆绑包
如果您不想将ServiceReference定义为参数类型(无论出于何种原因),可以使用以下代码获得它:
ServiceReference serviceRef = bundleContext.getServiceReferences(IFormProcessor.class, "(service.id=" + serviceId + ")");
感谢Balazs,我不知道过滤器参数,我想使用ServiceReference参数。。但是,当我使用该ServiceReference检索服务时,我遇到了一个问题强制转换异常。谢谢
ServiceReference serviceRef = bundleContext.getServiceReferences(IFormProcessor.class, "(service.id=" + serviceId + ")");