常用的OSGI包

在讲解之前,我们应该明白如何学习这些osgi包。
官网上讲得很详细。附网址:https://osgi.org/javadoc/r4v43/core/index.html
在这里,只讲一些笔者觉得相对重要的。在工程中经常会出现下面四个osgi包
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceListener;
import org.osgi.framework.ServiceEvent;

一、org.osgi.framework.BundleActivator;
定制bundle的启动和停止
有两个方法:
void start(BundleContext context)
当这个bundle启动时框架会调用start()方法
void stop(BundleContext context)
当bundle停止时,框架会调用stop()方法

二、org.osgi.framework.BundleContext;
BundleContext是一个OSGi框架传递给我们的Bundle的一个魔力入场券。当代码需要在任何时候与框架交互时,你将用到BundleContext。
事实上这是用OSGi API交互的唯一方法,并且框架在Bundle启动的时候将这些入场券发通过它们的BundleActivator发给每一个Bundle。

当 Bundle 启动的时候, OSGi 框架就创建这个 Bundle 的 BundleContext 对象, 直到 Bundle 停止运行从OSGi 容器卸载为止。当bundle激活时,BundleContext 对象被传递给
BundleActivator.start(BundleContext) ,当bundle停止时,BundleContext 对象被传递给
BundleActivator.stop(BundleContext) 。

有几个经常用到的方法:
BundleContext.registerService():在 OSGi 容器中注册服务
BundleContext.getService() :从当前 OSGi 容器中获取已有的服务
BundleContext.addBundleListener():在 OSGi 容器中注册事件监听器
BundleContext.getProperty():获取 Bundle 所处环境的环境属性
getServiceReferences():获取服务的引用
registerService():注册服务
addServiceListener():增加服务监听者

每个 Bundle 的 BundleContext 对象都是在调用 Bundle.start() 方法时由 OSGi 框架创建并以方法参数的形式传入到 Bundle 中, 实现 Bundle 时一般会把这个对象的引用保留起来, 以便在 Bundle 其他代码中使用。

三、org.osgi.framework.ServiceListener
是一个监听接口
有一个方法:
void serviceChanged(ServiceEvent event)

四、org.osgi.framework.ServiceEvent
其中ServiceEvent有四种值,分别为
MODIFIED :当注册的服务被改动时
MODIFIED_ENDMATCH :注册服务的属性已经修改,新的属性不再匹配侦听器的过滤器
REGISTERED :当服务被注册时
UNREGISTERING :当服务被卸载
有两个方法:
getServiceReference():返回一个服务的引用
getType():返回时间的类型

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值