Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java OSGI-按服务ID查找捆绑包引用_Java_Osgi_Blueprint Osgi - Fatal编程技术网

Java OSGI-按服务ID查找捆绑包引用

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" >

我正在使用一个引用侦听器,在侦听器方法中使用服务、字典参数

字典有一个service.id,那么我需要该服务的捆绑包

我的问题是,拥有服务和服务ID,如何获取Bundle对象

例如:

<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 + ")");