java里Bundle是什么_OSGi 体系结构及Bundle简介
1、OSGi 的体系架构是基于插件式的软件结构,包括一个 OSGi 框架和一系列插件,在 OSGi中,插件称为 Bundle,其中,OSGi 框架规范是 OSGi 规范的核心部分,它提供了一个通用的、安全可管理的 Java 框架,通过这个框架,可以支持 Bundle 服务应用的部署和扩展。Bundle 之间可以通过 Import Package 和 Require-Bundle 来共享 Java 类,在 OSGi 服务平台中,用户通过开发 Bundle 来提供需要的功能,这些 Bundle 可以动态加载和卸载,或者根据需要远程下载和升级。OSGi 体系结构图如图 1 所示:
图示1 OSGi 体系结构
其中:
Execution Environment:
Bundle 应用所倚赖运行的 Java 执行环境,如 J2SE-1.4、CDC-1.0 等都是可用的执行环境。
Modules:
模块层定义了 Bundle 应用的加载策略。OSGi 框架是一个健壮并且严格定义的类加载模型。在大多数 Java 应用中,通常只有一个单独的 ClassPath,它包含了所有的 Java 类文件和资源文件,OSGi基于Java技术,对于每个实现了 BundleActivator 接口的 Bundle 应用,为它生成一个单独的 ClassLoader,使得 Bundle 应用的组织更加模块化。
Life Cycle:
生命周期层可以动态地对 Bundle 进行安装、启动、停止、升级和卸载等操作。该层基于模块层,提供了一组 API 来控制 Bundle 应用的运行时操作。
Service Registry 和 Services:
OSGi 服务层定义了一个集成在生命周期层中的动态协作模型,是一个发布、动态寻找、绑定的服务模型。一个服务通常是一个 Java 对象实现了特定的服务接口,并且通过服务注册,被绑定到 OSGi 的运行环境中。Bundle 应用可以注册发布服务,动态绑定服务,并且在服务注册状态改变时,可以接受到事件消息等。
Security:
OSGi 的安全管理是基于 Java2 安全体系的,贯穿在 OSGi 平台的所有层中,它能够对部署在 OSGi 运行环境中的 Bundle 应用进行详细的管理控制。
在一个动态扩展的 OSGi 环境中,OSGi 框架管理 Bundle 的安装和更新,同时也管理 Bundle 和服务之间的依赖关系。一个 Bundle 可能处于以下六个状态,如图 2 所示:
图示 2 Bundle 状态图
INSTALLED:安装完成,本地资源成功加载。
RESOLVED:依赖关系满足,这个状态意味该Bundle要么已经准备好运行,要么是被停止了。
STARTING:Bundle正在被启动,BundleActivator的start()方法已经被调用但是还没有返回。
STOPPING:Bundle正在被停止,BundleActivator的stop()方法已经被调用但是还没有返回。
ACTIVE:Bundle 被成功启动并且在运行。
UNINSTALLED:bundle被卸载并且无法进入其他状态。
Bundle接口定义了getState()方法来返回Bundle的状态。
凡是有该标志的文章,都是该blog博主Caoer(草儿)原创,凡是索引、收藏
、转载请注明来处和原文作者。非常感谢。
java里Bundle是什么_OSGi 体系结构及Bundle简介相关推荐
- 在java中写出html代码,在java里写html代码
在java里写html代码 [2021-02-09 07:31:38] 简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace("/ ...
- JAVA深度剖析之JVM的体系结构
JAVA深度剖析之JVM的体系结构 JAVA深度剖析之JVM的体系结构: JVM的生命周期 JVM实例的诞生:当启动一个Java程序时,一个JVM实例就产生了,任何一个拥有publicstaticvo ...
- Java 里的 for (;;) 与 while (true),哪个更快?
点击关注公众号,Java干货及时送达 在JDK8u的jdk项目下做个很粗略的搜索: mymbp:/Users/me/workspace/jdk8u/jdk/src $ egrep -nr " ...
- 快手二面:Java 里的 for (;;) 与 while (true),哪个更快?
转自:知乎 www.zhihu.com/question/52311366/answer/1300903 在 JDK8u 的 jdk 项目下做个很粗略的搜索: mymbp:/Users/me/work ...
- JAVA里面的int类型 和Integer类型,有什么不一样
JAVA里面的int类型 和Integer类型,有什么不一样 原创 2013年09月04日 23:15:11 标签: java / 2120 编辑 删除 JAVA里面的int类型 和Integer类型 ...
- 【转】Java里如何实现线程间通信
正常情况下,每个子线程完成各自的任务就可以结束了.不过有的时候,我们希望多个线程协同工作来完成某个任务,这时就涉及到了线程间通信了. 本文涉及到的知识点:thread.join(), object.w ...
- 原型模式(ProtoType) - Java里的对象复制
一, 引用的复制和对象复制. 在编程中, 我们有时会用两个引用指向同一个对象. 例如: ArrayList a = new ArrayLIst(); ArrayList b = a; 看起来好像有a, ...
- Java里的数组介绍
注意, 本文讲的是数组(Array), 非数组型线性表容器(ArrayList). 一. C语言的静态数组和动态数组. 稍微接触过c的程序猿都应该知道, c语言里的数组分为静态数组和动态数组. 1. ...
- Java 里的泛型简介.
我们在JDK中有时回见到1个类or接口后面跟这1个尖括号. 例如: java.util.HashMap<K,V> 我们一开始大概知道K,V 大概就是Key和Value的意思, 键值对嘛, ...
最新文章
- Linux tail 命令详解
- python 2021/12/31
- go语言基础到提高(12)-函数类型与函数变量
- Find The Bone
- A Common Framework for Interactive Texture Transfer(CVPR 2018)学习笔记
- jQuery Ajax – Servlets集成:构建完整的应用程序
- 【华为云技术分享】前端工程师必备:从浏览器的渲染到性能优化
- Win测试——使用Spy++获取窗口标题
- mysql sql优化与调优机制详解_MySQL性能调优——锁定机制与锁优化分析详解
- python ssd目标检测_基于自注意力的SSD图像目标检测算法
- 云服务器搭建京东签到,在路由器上实现jd京东每日自动签到、自动领京豆,并将签到结果推送至微信...
- 黑苹果 Catalina 15 声卡定制
- windows 7 安装 sam-ba at91 usb to serial converter 驱动不成功的解决
- aic准则python_Python数据科学:线性回归
- OutMan——Objective-C内存管理
- BD新标签页-最值得安装的浏览器插件
- 在word中插入代码行号
- mysql中复制表结构的方法(亲测通过)
- 埃森哲杯上海大学春季赛暨金马五校赛题解汇总
- 深度学习笔记(六):过拟合是什么意思
热门文章
- SaaSBase:最受欢迎的跨境电商软件有哪些(中篇)
- 以Python+Bottle框架作为jQuery.Uploadify控件的后端 | apt-blog.net 无证程序员的PT桑apt-blog.net 无证程序员的PT桑...
- 【IT名人堂】何云飞:阿里云数据库的架构演进之路
- 快鲸智慧社区系统的应用场景有哪些
- Reinforcement Learning强化学习 (第二版)
- 【计算机毕业设计】jsp+java ssm社会保险养老系统
- DataGridView 选中行
- 【3D捏脸功能实现】
- matlab 高斯展宽,高斯函数半高宽
- [转自百度尘土飞扬博客]windows server 2003常用命令