最近很忙,虽然也不知道忙些啥,但总也抽不出时间来看OSGi,但看过的总还要总结总结才有收获啊。
最近主要是大致了解了OSGi的动态和安全。
所谓动态,说白了就是所有的更改都是在保证JVM不重起的情况下进行的。这其中涉及到对应用程序和组件的生命周期管理,先说说管理的对象吧。大而言之就是应用程序和组件,具体到OSGi的概念体系中,称为bundle,bundle从物理上来讲,就是java语言里的jar包,它完全和普通的zip文件兼容。
具体而言对bundle生命周期的处理包括了如下几种:
- <!----> <!---->安装bundle。Bundle必须是那些准备好的,不同的安装在OSGi框架中的组件,以便可以被执行。
- <!----> <!---->起停bundle。安装在OSGi框架中的bundle可以被启动和停止。启动一个bundle可以获取特定的资源,停止bundle则清理特定的资源。在一个OSGi服务平台中,所有的应用都在同一个JVM里运行,因此也共享存储内存,资源和CPU周期。<o:p></o:p>
- <!----> <!---->更新bundle。OSGi框架先停止已经存在的应用程序,在这之后,资源被清理了。代码被卸载,并被新的代码所代替。代码更新后,重起bundle,这些都不需要重起JVM。<o:p></o:p>
- <!----> <!---->卸载bundle。在bundle生命结束之时,从系统里删除掉代码和相应的资源。<o:p></o:p>
OSGi提供了一个比普通java程序更安全的系统。
一般的java程序有三层安全防御措施:
- JVM自己的安全机制
- java语言的安全特性
- 基于安全的java2代码,这个就是指java代码的package路径访问(这条可选)
OSGi框架则在这三条的基础之上,又多了一层安全防御措施:
OSGi框架将各个bundle严格的分离开来,在OSGi服务平台上,bundle需要允许还能与其他的bundle取得联系。
而OSGi实现
动态和
安全的关键就是classloader的管理,java由于对代码进行了package路径的管理,使得代码更好维护了。OSGi则从更基本的classloader入手,利用classloader实现动态和安全的目的,并有效的对classloader进行了组织和管理。
下一步的重点就是了解OSGi中的classloader是怎样的。
分享到:
相关推荐
OSGi(Open Services Gateway Initiative)学习笔记(一) 在IT领域,OSGi是一种模块化系统和Java服务平台,它提供了一种动态管理软件组件的能力。本文将深入探讨OSGi的基本概念、架构以及如何使用它来构建可扩展和...
在本篇“osgi学习笔记(二)”中,我们将深入探讨OSGi(Open Services Gateway Initiative)框架的核心概念、工作原理以及如何在实际项目中应用它。OSGi是一种Java模块化系统,它允许开发人员创建可独立更新和依赖...
2. **服务注册**:OSGI提供了一个服务注册表(Service Registry),允许bundle将服务发布并供其他bundle使用。服务注册表基于接口,允许bundle按需查找和使用服务,实现服务的动态发现和依赖注入。 3. **模型管理**...
在本篇OSGi学习笔记中,我们将深入探讨OSGi(Open Service Gateway Initiative)这一模块化系统,特别是关于服务方面的知识。OSGi是一个Java平台上的动态模块化系统,它允许开发者创建可热部署、互相依赖的模块,...
### Linux 下 OSGi 框架实现笔记 #### 一、Linux 环境配置与准备 在开始实现 Linux 下的 OSGi 框架之前,首先需要确保已经正确配置了 Linux 的开发环境。 ##### 1. Linux 开发环境配置 **定义**:Linux 是一个...
### OSGi实战读书笔记知识点总结 #### 一、Bundle的类型及特点 - **RequireBundles**: 使用了`Require-Bundle`头字段的Bundle能够访问该依赖Bundle中所有的资源文件和导出的包。这意味着如果一个Bundle声明了对另...
OSGi(Open Service Gateway Initiative)是一个基于Java语言的服务规范,旨在提供一个开放的服务平台,它允许多种设备通过网关来提供各种服务。OSGi Alliance是一个开放标准化组织,由多家公司共同创立,目的是为...
2. **Spring与OSGi的关系**:Spring框架如何适应OSGi环境,可能讲解了Spring的模块化设计如何与OSGi的模块化理念相吻合。 3. **SpringDM(Spring Dynamic Modules)**:SpringDM是Spring框架与OSGi集成的早期解决...
标题中的“OSGI研究笔记1 - Equinox ServletBridge模式下调用Datasource”表明了这篇文章将探讨如何在OSGI(Open Service Gateway Initiative)环境下,利用Equinox的ServletBridge模块来访问和使用DataSource。OSGI...
2. **协作机制**:J2EE应用之间的协作主要通过接口和API实现,而OSGi允许bundle之间通过共享Java包、发布或引用服务进行交互。这意味着OSGi提供了更灵活的组件间通信方式。 3. **部署模型**:J2EE支持将多个WAR文件...
在深入探讨OSGi Karaf的知识点之前,我们先简要了解一下Karaf与OSGi的基本概念。OSGi(Open Service Gateway Initiative)是一种Java平台上的模块化系统和应用编程框架,用于构建可动态部署、管理和更新的模块化应用...
2. **SpringDM原理**:SpringDM是Spring Framework的一个扩展,它允许开发者在OSGi环境中使用熟悉的Spring配置方式来管理和配置服务。它提供了基于XML或注解的配置模型,使得开发者可以在OSGi容器中声明依赖关系和...
读书笔记:OSGI 实战 整合Maven 测试代码
本篇笔记将探讨如何在OSGi环境中注册服务以及如何引用这些服务,同时会涉及到源码分析和工具的使用。 首先,OSGi服务是一个在OSGi容器中注册的可发现和可使用的对象。服务注册的过程通常包括以下步骤: 1. **实现...
读书笔记:《Java应用架构设计模块化模式与OSGi》源代码
它还展示了OSGi框架和核心服务的精妙之处:构建时依赖项(jar文件)的总大小约为3兆字节,额外的运行时包数为10个OSGi捆绑包(也为jar文件),代表着大约2兆字节,包括所有运行时功能,例如OSGi Web控制台,交互式...
标题中的“很久之前的osgi整理”表明这是一份关于OSGi技术的历史回顾或者早期学习笔记。OSGi(Open Service Gateway Initiative)是一个Java模块化系统,它允许开发人员将应用程序分解为独立的模块或服务,这些模块...
笔记仅在主要从 Eclipse 运行的基于 Equinox 的 OSGi 环境中对其进行了测试(Felix 和 Virgo 也可以运行)。安装一旦我完成了项目的 Tycho 构建,我将提供一个包含所有必需包的 p2 更新站点。 在此之前,您必须编译...