能否在不使用服务引用的情况下从OSGi框架中获取所有服务?

我正在编写一个Lua脚本,用于从OSGi框架中获取基准测试服务。我已经成功获得了一个类型为userdata的对象,对应于一个ServiceReference;问题在于,我无法使用getService从Bundle Context中获取userdata对象。 它会产生以下错误:

org.osgi.framework.ServiceReference expected, got userdata

因此,考虑到这一点,我想直接从框架中获取所有服务,然后以某种方式迭代它们。这是可能的吗?通常,在获取服务时,引用是OSGi中必需的。

要么这样,要么找到一种将userdata对象传递给getService(reference)方法的方法。

我的代码是:

refs = osgilib.bc():getServiceReferences("CLASSNAME", nil);

if (type(elem) == "table") then

print(pairs(refs));

for ref in refs do

collector = osgilib.bc().getService(ref); //代码在这里崩溃

print(collector.getName());

end

else

print(refs);

collector = osgilib.bc():getService(refs); //代码在这里崩溃

print(collector);

end

bc是来自OSGi Java框架的Bundle Context。 谢谢 :)

点赞