OSGI的bundle

为什么要引入bundle?我们常常需要把大型系统分解为多个较小的互相协作的逻辑单元,我们希望这些逻辑单元内部之间是互相不可见的,但同时我也要是这些逻辑单元对外提供一些接口供外部调用以协作完成我们的业务。这不就是面向对象吗?类似于封装一个类,同时提供一些外部可以访问的public方法。

但事实上大多数情况下这些逻辑单元是不可能通过一个类就能解决的,可能是多个类一起协作完成的,我们常常把这些类打包成一个jar包供外部调用,比如数据连接的jdbc jar包。传统的java更多的面向类的而非面向jar的,于是就产生模块化管理的一套标准协议(OSGI)。

那么到底什么是bundle,简单讲一个jar包就是一个bundle,里面包含:class文件,xml,jpg等资源文件,元数据文件(MANIFEST.MF)。实现模块化的关键是就是这个MANIFEST.MF文件,有了这个文件一个jar包就变成了一个bundle。

参考:http://osgi.com.cn/article/7289219

OSGI的bundle

时间: 2024-10-05 16:04:09

OSGI的bundle的相关文章

【转】获取OSGi任意Bundle的ClassLoader

在OSGi环境中,在Bundle内部代码中要得到自己Bundle的ClassLoader就很简单,在自己Bundle的代码中,直接写this.getClass().getClassLoader()就得到了自己Bundle的ClassLoader了.但怎么在其他Bundle或外部代码中得到任意一个Bundle的ClassLoader呢?Bundle和BundleContext都没有提供getClassLoader方法来获取,我就用了一种比较另类的方法来获取.突破口就在Bundle.loadClas

osgi与流行的框架(spring,struts,hibernate等)的集成

1.与流行的 JAVA B/S体系架构的集成 了解了基于osgi系统设计的基本思想,进一步来研究osgi与流行的框架(spring,struts,hibernate等)的集成,这里首先讲解一下集成原理. l        解决和spring的集成 由于spring的应用占据了大部分的java应用领域,所以解决与spring的集成是osgi必须解决的,spring-dm的推出大大促进了两者的结合,有助于osgi进军企业领域. Spring所带来得好处主要有这么两点: 1.       不需要对外的

OSGi与Maven、Eclipse PlugIn的区别

osgi 的框架的 apache felix   equinox osgi的bundle 的概念maven 的  module  的   Eclipse 的 PlugIn  的区别.... OSGi与Maven Maven也具有模块化系统的特征:但是它只是一个编译时工具,而不是运行时框架.Maven并不是OSGi的竞争者,而是OSGi的一个补充. 通过在pom.xml中指定所依赖jar包的名称.版本号,Maven就能在编译时自动下载正确的jar文件,并部署到classpath中. 然而Maven

OSGi 的核心配置、动态化及问题

一.OSGi的核心组件Bundle,与java中jar包的差别就是元数据配置: 常用的Bundle元数据定义: a) Bundle-Activator:定义Activator的实现全限定类名称,此类必须实现BundleActivator接口,并实现start和stop方法.当Bundle被OSGi容器启动或停止时就会去调用start和stop方法.Bundle-Activator并非是必须的,只有在需要初始化或是销毁资源时才有用,并且不推荐在start方法中进行复杂的处理,以免加重OSGi容器启

OSGi 的由来和本质特性

OSGi 的由来 随着科技和需求的发展和变化,现在的软件变得越来越庞大.这样,随之而来的最大挑战就是软件在设计上的越来越复杂和维护上的越来越困难.为了解决这个问题,软件架构师将软件切分成比较小的并且易于理解的多个模块.那么软件模块化会给我们带来什么样的好处呢? 拆分人力:将软件模块化后,我们就可以分配独立的团队去处理独立的模块,从而将人力拆分开来.这样既便于管理,又会降低整个软件的设计的复杂性.因为每个独立的团队可以专心去设计和实现其模块,而不用通盘考虑整个软件的复杂性. 抽象化:将软件模块化后

OSGI传统注册式服务与声明式服务

上一篇博文中我们编写了第二个简单的osgi的example,并编写了一个接口DictionaryService,并在Activator这个Bundle中实现了这个interface,并在start启动方法中进行了osgi服务的注册,但并没有使用这个服务,这一篇文章中并不讲解怎么使用这个已经注册的服务,但是会讲解服务的使用方式,一种为声明式服务,一种为传统注册式服务,以下就是开始讲解何为osgi的注册式服务与声明式服务. 传统注册式服务 传统方式下,我们注册服务都是在bundle的激活器(Acti

OSGI学习(1) - HelloWorld

工作后第一个项目就用的OSGI.连Java都不怎么会,一下子就用OSGI,各种概念名词都不懂,而且没有时间去深入学习,只能在已经搭好的框架上写交易,写业务流程,数据库的增删改查,过了很久才慢慢理解. 这个系列的笔记主要以实例的方式介绍我们项目中用到的OSGI技术和原理,主要包括OSGI的HelloWorld,OSGI的服务封装与发布,OSGI与Spring的结合SpringDM,OSGI的类加载原理,OSGI的测试. OSGI HelloWorld (1) 打开Eclipse,新开一个Works

OSGI实例demo说明(二)

下面我们就来真正的写一个实例demo,结合OSGI的优点来说明一下,该demo设计如下图: 这个demo包含五个Bundles: SayHello Bundle 包含一个接口,只有唯一的方法sayHello(): BobSays.RodSays.KentSays三个Bundles分别实现了三个具体的sayHello(): SayHelloServiceBundle提供了说hello的机会,是具体的一个服务应用,在功能上有点类似于main函数的味道. 这个HelloWorlddemo 的目的不但可

扩展Tomcat支持OSGi应用服务

转自 扩展Tomcat支持OSGi应用服务(1) 扩展Tomcat支持OSGi应用服务(2) 扩展Tomcat支持OSGi应用服务(3) 1.摘要 OSGi的动态服务,包版本管理,安全设施,热插拔等特性吸引了越来越多开发人员的关注,由于OSGi不同于以往的设计理念,在企业级应用中一直没有很大的发挥.不过通过大家的不断努力,OSGi已在企业级服务平台中有所集成.本文站在另一个角度尝试Tomcat服务器下的OSGi服务集成,为web应用提供动态服务,为企业级开发提供参考. 本文需要读者了解以下内容: