`
BlueDavy
  • 浏览: 153743 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

OSGi Extender Model启示录

阅读更多
Peter在2月23的时候在OSGi的官方网站上贴了这么一篇blog,挺经典,至少让我学到了一些东西,建议关注OSGi或者关心系统设计中资源管理的人都看看,在这篇blog中我简单的将peter写的blog的意思大概写一下,也不全部翻译了,另外说一下自己的看法。
引起Peter写这篇blog的主要原因是对于使用程序的资源文件的例子的介绍,例如在windows中,当我们安装了editplus后,假设我们把txt的打开方式已经设置为了editplus,但此时我们不能随意的将editplus目录随意的转移,当转移后就会出现txt无法再用editplus打开了,而在mac中,程序的文件目录是可以随意转移的,转移并不会影响到使用它的文件,显然后者强于前者,其实也就类似于现在倡导的绿色软件的概念,Peter也提及了为什么在mac中实现了这个,而在windows中没实现,mac使用了小型数据库来记录程序所在的路径等等信息,windows通常使用注册表来记录,这里并没有什么很大的差别,差别在于在mac中当移动目录或删除目录时会发送消息给小型数据库,使得其做出相应的同步动作,而windows则不会,这也就决定了在mac中可以随意的去移动或删除程序,而在windows中则不能。
从这样的一个问题中,peter想到了基于OSGi也实现一个这样的智能的资源管理的东西,他把它称为Extender Model,其实我觉得有点象扩展点,不过不同的地方就在于它增加了一个资源管理的概念,资源管理最重要的其实就是关注资源的改变(安装、删除、移动等),peter以servlet这个为例,来说明了OSGi Extender Model的实现方法以及意义,基于OSGi Extender Model的话,就可以使得servlet本身不用再去主动调用HttpService.registerServlet来注册,而是由一个Servlet Extender Model实现的Bundle Listener来根据Bundle的安装、卸载、更新等状态来主动的加载、卸载、更新servlet,可以看到,在这样的情况下的好处就是Servlet Bundle本身不用再去关注Http Service的状态,同时也不用去调用HttpService的东西,这呢,从另外一个角度去看,大家就会发现,这也是一种非常符合DI思想的设计,采用Extender Model这种设计方法就可以做到资源不用主动的去调用容器来实现对于其自身生命周期的管理,这样就使得整个系统处于更加灵活的体系中了,非常的爽。
其实实现OSGi Extender Model非常的简单,编写一个Bundle Listener,监听Bundle的安装、卸载、更新动作,同时根据Bundle的元信息中的描述做出相应的反应(如Servlet Bundle Listener就是当监听到有Bundle安装时,即解析Bundle的元信息,如其中含有ServletMap这样的信息,则获取其具体信息,并注册其中的Servlet)。
如果感兴趣的话,请同学们去查看Peter的这两个帖子:
http://www.osgi.org/blog/2007/02/osgi-extender-model.html
http://www.aqute.biz/Snippets/Extender

这个OSGi Extender Model给了我们什么启示呢:
1、Declarative方式的使用
      Declarative无非是现在一种非常非常流行的软件设计理念,在这样的理念中,可以尽量的保证当前组件的简单,而通过Declarative的方式去增强的描述该组件,其实在spring中最重要的也是这个思想,而在OSGi的DS中也是这么一个思想,声明式的编程自然让整个系统的体系变得非常的简单和灵活,并且大大提升系统组件的可重用性,特别是对于编译型的语言而言,在OSGi Extender Model中通过Declarative的方式说明了定义Bundle中的资源,容器则自动的对其生命周期进行管理,这充分的发挥了Declarative的优势(声明式的增强功能)以及DI思想(运行于容器中的东西不需要主动调用容器来实现注入、生命周期管理这些功能等)的特点。
2、跨Bundle的资源管理方式
      跨Bundle的资源管理其实是之前基于OSGi搭建Webwork+Spring+Hibernate这样结构的难处,总是没想到很好的方法去管理Hibernate的PO文件,采用OSGi Extender这种思想的话这个就很容易实现了,不过Hibernate还存在的一个问题就是SessionFactory的重建,这个对于动态化来讲是有一定的影响的,因为sessionfactory的重建消耗的时间太长了点,同样的道理,对于Webwork Action的管理也是如此。
分享到:
评论
2 楼 BlueDavy 2007-03-21  
准确的说应该是置于某种容器中的跨Bundle的容器资源的管理,如Webwork的Action就属于放入webwork容器(虽然不准确,但可以这么看)的资源,在这样的情况下OSGi Extender Model还是非常的有意义的。
1 楼 shaucle 2007-03-21  
好文
那几个swf很不错!

Declarative增强使得设计起来更简单和优美,而且更强大.

资源能不跨Bundle当然是最好的,跨Bundle的话配制管理会很烦

相关推荐

    org.osgi.namespace.extender-1.0.1.jar

    org.osgi.namespace.extender-1.0.1.jar

    org.springframework.osgi.extender-1.2.1.jar

    org.springframework.osgi.extender-1.2.1.jar

    OSGI 实例eclipse插件开发

    4. `org.springframework.osgi.extender`:这是Spring OSGI扩展器,它允许在OSGI环境中启动和管理Spring应用上下文。它监控bundle的生命周期,并在适当的时候初始化和销毁Spring应用上下文。 5. `osgi_serviceImpl`...

    spring osgi相关资源

    2. spring-osgi-extender:实现了Spring DM的功能,使Spring应用能在OSGi环境中运行。 3. spring-osgi-io:提供I/O服务,如网络、文件系统访问等,适应OSGi的隔离环境。 4. 依赖库:包括了对Apache Felix或Equinox等...

    OSGI 开发文档中文的

    OSGI(Open Services Gateway Initiative)是一种开放标准,用于创建可模块化的Java应用程序。它提供了一种灵活的框架,使得开发者可以构建、部署和管理模块化组件,这些组件被称为服务或bundle。OSGI的核心理念是将...

    osgi介绍osgi介绍

    OSGi(Open Services Gateway Initiative)是一种Java模块化系统,它为开发人员提供了一种动态、模块化的运行时环境。在OSGi中,应用程序被分解为称为“bundle”的独立单元,这些bundle可以相互依赖并独立地加载、...

    osgi,林昊写的osgi实战和进阶

    OSGI(Open Services Gateway Initiative)是一种Java模块化系统,它允许开发者将应用程序分解为一系列可独立部署、更新和交互的服务。林昊所著的《OSGI实战》与《OSGI进阶》是深入理解OSGI技术的重要参考资料,适合...

    osgi.enterprise-6.0.0

    • Requirements for extensions to the OSGi publish/find/bind service model • Enterprise-class life cycle and configuration management • Integration of established Java EE technology into OSGi

    OSGI组件编程(osgi.component.programming)

    OSGI组件编程是一种在Java平台上构建模块化应用程序的方法,它由OSGi联盟制定标准,并被广泛应用于企业级软件开发,尤其是对于需要高度可扩展性和动态性的系统。在本教程中,我们将深入探讨如何使用Eclipse和Equinox...

    OSGi入门教程(OSGi Introduce)

    OSGi(Open Services Gateway Initiative)是一种Java平台上的模块化服务框架,它定义了一种标准,使得开发者能够构建可互操作的、动态的、模块化的软件系统。OSGi的核心概念是基于Java的模块化,它的主要目标是为...

    OSGI规范中文版

    OSGi规范中文版是一本全面介绍OSGi技术的书籍,它不仅涵盖了OSGi技术的基础知识,还详细介绍了OSGi的内部结构和工作原理,对于想要深入学习和应用OSGi技术的开发者而言,是一本非常有价值的参考书。 ### OSGi规范的...

    OSGI 入门资料PDF

    OSGI(Open Services Gateway Initiative)是一种开放标准,用于创建模块化和动态的Java应用程序。它为Java开发人员提供了一个框架,使他们能够构建可热插拔的组件,从而实现更灵活、可扩展和可维护的软件系统。在本...

    OSGI原理与最佳实践

    资源名称:OSGI原理与最佳实践内容简介:国内第一本OSGi图书OSGi国内推广者林昊多年经验的结晶涵盖OSGi从入门到深入的知识体系引领OSGi国内研究和普及本书基于作者多年使用OSGi的经验而编写,涵盖了OSGi从入门到深入...

    osgi重要文档--osgi核心规范文档,osgi服务文档,osgi-最佳原理与实践(王昊编著,共79页)

    这个压缩包包含了关于OSGI的重要文档,分别是“OSGi R4核心规范文档”、“OSGi服务文档”以及“OSGi-最佳原理与实践”(王昊编著)。下面将详细介绍这些文档所涵盖的关键知识点。 首先,"OSGi R4核心规范文档"是...

    tomcat嵌入OSGI容器

    标题中的“tomcat嵌入OSGI容器”是指在Apache Tomcat服务器中集成OSGI(Open Service Gateway Initiative)框架,使得Tomcat能够支持模块化的应用程序部署和管理。OSGI是一种Java平台上的服务导向架构,它允许动态地...

    Enterprise OSGI in action

    《企业OSGi实战》一书是OSGi企业应用的权威指南,它不仅涵盖了OSGi在企业环境中的应用,还提供了Java企业版(Java EE)与OSGi特性的融合方法。本书详细介绍了模块化编程的重要性,以及OSGi如何强化Java的模块化能力...

    Spring Dynamic Modules开发所需全部jar包

    spring-osgi-extender-1.2.1.jar spring-osgi-extender-1.2.1-sources.jar spring-osgi-io-1.2.1.jar spring-osgi-io-1.2.1-sources.jar spring-osgi-mock-1.2.1.jar spring-osgi-mock-1.2.1-sources.jar spring-...

    osgi学习笔记(一)

    OSGi(Open Services Gateway Initiative)学习笔记(一) 在IT领域,OSGi是一种模块化系统和Java服务平台,它提供了一种动态管理软件组件的能力。本文将深入探讨OSGi的基本概念、架构以及如何使用它来构建可扩展和...

Global site tag (gtag.js) - Google Analytics