常用的OSGI包
来源:互联网 发布:网络诈骗2000判刑多久 编辑:程序博客网 时间:2024/05/21 13:56
在讲解之前,我们应该明白如何学习这些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():返回时间的类型
- 常用的OSGI包
- osgi 和 maven jar包的管理
- OSGI 中关于Module层包共享的一些注意事项
- 以 OSGi 包的形式开发和部署 Web 服务
- osgi的equinox实现中如何增加公共jar包
- OSGI中引用外部包的几种方法
- 通过eclipse手工生成osgi-bundle的jar包
- osgi 内嵌 jar包
- Android常用的包
- JavaSE_22_JDK常用的包
- java常用的包
- JDK常用的包
- java常用的包
- 常用的java包
- 常用的servlet包
- 常用的依赖包
- 常用的类包
- java常用的包
- Nginx + nginx-upload-module 文件服务器搭建
- 【Oracle学习】之 序列(Sequence)
- c语言怎么做到四舍五入?
- 上线经历
- LSTM基本原理
- 常用的OSGI包
- Java的PO.VO.DAO等类名包名解释
- worldfinal2017-I题-warshall算法
- 101-指向子网的广播
- Java计算校园课程表的周数
- Codeforces 809C [数位DP]
- Spring 自动依赖注入优化(primary)
- python下划线变量的含义
- vue各指令