我目前正在制作一个看门狗来检查管道中的所有捆绑包是否仍然正常运行。 (这将在分布式环境中,因此故障可能是网络故障,软件故障,其中一个服务器发生故障,......)
因为bundle可以绑定N个服务,N是任意的,所以检查应该使用以下方法递归地进行:
START at the first step in the pipeline
Use getServicesInUse to get the services references of the next step
use getBundle() on the gathered ServiceRerefence objects
REPEAT until we arrive at the bundle we want to stop at
这样我就可以获得管道的所有bundle对象(我假设)现在检查它们是否正常运行(或者只是它们仍然可以访问)我想知道是否
Bundle b = ...
if(b.getState() == Bundle.ACTIVE) ...;
会做的伎俩?当然还有必要的try catch子句来检测硬件/网络故障。
答案 0 :(得分:1)
你能澄清“管道中所有捆绑包”的含义吗?
你是对的,捆绑可以提供和使用零个或多个服务,但如果我要为OSGi系统创建一个看门狗,我会使用以下两种方法之一:
检查捆绑包的活动状态不会告诉您任何信息。捆绑包一旦启动就会保持活动状态,但它们提供的服务可能没有响应。