服务追踪(ServiceTracker)

  • 介绍
ServiceTracker是基于osgi开发中用于查找已经发布的服务的。 服务追踪器是由org.osgi.util.tracker.ServiceTracker类实现,它的作用是监视服务何时被添加、何时被移除(在添加和移除服务时框架会自动调用addingService()和removedService()方法,用户可继承ServiceTracker类覆盖这两个方法以实现服务变动时的处理逻辑)以及在服务可用时获取服务实例(getService()、getServices()、和waitForService()方法用于返回服务实例)。
  • 示例
[codesyntax lang="java" lines="normal"]
ServiceTracker serviceTracker = new ServiceTracker(context, name, null);

System.out.println("serviceTracker : " + serviceTracker);
serviceTracker.open();

try
{
	return serviceTracker.waitForService(1000);
}
catch (InterruptedException e)
{
	e.printStackTrace();
}
[/codesyntax] 上面的代码中指定要跟踪的服务名称,另外也可以通过Filter来过滤服务。 [codesyntax lang="java"]
Filter dataFilter = context.createFilter("(objectClass=org.suren.IDataPrivilegeCheckService)");
ServiceTracker<IDataPrivilegeCheckService, IDataPrivilegeCheckService> dataPriviTracker = new ServiceTracker<IDataPrivilegeCheckService, IDataPrivilegeCheckService>(
        Activator.LOCAL_BUNDLE.getBundleContext(), dataFilter, null) {

    @Override
    public IDataPrivilegeCheckService addingService(ServiceReference<IDataPrivilegeCheckService> refer) {
        IDataPrivilegeCheckService dataPrivilege =  context.getService(refer);
        registDataValidateService(dataPrivilege);
        return dataPrivilege;
    }

    @Override
    public void remove(ServiceReference<IDataPrivilegeCheckService> refer) {
        IDataPrivilegeCheckService dataPrivilege =  context.getService(refer);
        unRegistDataValidateService(dataPrivilege);
    }
};
dataPriviTracker.open();
[/codesyntax]

转载于:https://my.oschina.net/surenpi/blog/816952

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值