`
Goodtiger
  • 浏览: 107421 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

OSGi R4.2 Early Draft

    博客分类:
  • OSGi
阅读更多

最近比较的忙,写Blog的频度、长度都在变化。

一直在关注OSGi的发展,今天又看到了BlueDavy的新文章OSGi R4.2 Early Draft 评述

转载:

 

随着OSGi近两年的迅猛发展,尤其是Java企业应用领域厂商对OSGi的认同,大家对于OSGi的新版规范的关注远远超过了之前的几个版本,近来OSGi终于是放出了传闻已久的R 4.2的Early Draft,其实从Early Draft来看,我觉得完全可以认为不仅仅是一个小版本的升级了,甚至可以认为是R5了,因为R 4.2增强的东西还是非常多的,其中就包括了大家期待已久的RFC119,不过没看到传说中的RFC66,有一丁点的失望,不过相信后面的Draft中应该会加上,:),这样看来,R5更是值得期待了,让我们先来一起品尝一下4.2 Early Draft这道大餐。
OSGi R 4.2 Early Draft中包括了这些方面:
1、RFC 120 Security Enhancements
这个部分是由BEA的人主导的,从规范来看,Bea自己新版的Weblogic中肯定是已经实现了规范的。
个人对于OSGi Bundle这块的安全控制的增强不是很感兴趣,在这里就简单说下这次规范增强的目标,BEA在使用OSGi做了新版的Weblogic后,碰到一个需求,就是Weblogic应该控制自己的package是不应该被其他部署在weblogic中的应用操作的,那这在以前OSGi的规范中是支持不了的,因此提出了对原来安全规范的增强,规范中讲了具体做,不过因为自己不感兴趣,也就没仔细看了,感兴趣的同学可以去下载看看。
2、RFC 121 Bundle Tracker
这个部分是由IBM的BJ Hargrave主导的,从名字相信大家就能猜出作用了,在OSGI R4中有Service Tracker,可以跟踪OSGi Service的变化状况,但在实际的使用过程中,确实会出现有需求是要跟踪Bundle的生命周期的变化的,这个我记得之前有个同学也和我提及过这点,我记得当时我给了他一个借用OSGi Service来实现的方案,现在有了这个规范后大家以后就可以直接使用了。
Bundle Tracker的用法和Service Tracker基本完全一样,所以无需多讲。
3、RFC 125 Bundle License
:(,又是一个不感兴趣的增强,这个部分由OSGi著名人物:Peter Kriens主导,目标是为了能够在Bundle的header信息中增加License信息,以便在安装Bundle时就能够知道这个Bundle是什么License机制的,例如LGPL、Apache等。
做法就是在MANIFEST.MF中增加了一个Bundle-License的项。
4、RFC 126 Service Registry Hooks
这个部分由IBM的BJ Hargrave主导,这个部分推出的目的是为了能够监听指定Bundle中Service的变化情况,和以前的ServiceListener还是稍有差别,ServiceListener中只是监听Service,而没法知道是哪个Bundle中的Service。
以后要监听指定Bundle中的Service的变化,只要直接调用OSGi提供的PublishHook、FindHook、BindHook和EventHook就可以了。
5、RFC 128 Accessing Exit Values from Applications
这个部分由IBM的Thomas Watson主导,这个部分是为了增加新的OSGi Service:Application Admin Service而提出的,作用是用来得到应用的exit Value,就像我们在调用native command的时候,通过Process可以取到command的exit value一样。
6、RFC 129 Initial Provisioning Update
这个部分由Peter Kriens主导,看起来好像是为了实现加载不同类型的资源的,不感兴趣,所以没仔细看。
7、RFC 132 Command Line Interface and Launching
这个部分由Peter Kriens主导,这块成规范了,也不知道算好事还是坏事,个人觉得利弊都有吧,好处是以后不用管什么OSGi实现的Console都敲同样的命令了,不像现在Equinox和Felix console的命令就不同,坏处是如果有规范中不支持的命令的需求就不好玩了,难道做的像unix shell那么强大?
...从规范来看真的是,这个OSGi Console可真的强大无比了,支持piping、scripting、后台运行;支持多种方式连console,最重要的是,支持很容易扩展自己的命令;另外,在规范中还增加了OSGi Framework的启动、停止、重启脚本支持的规范,这倒是不错,以后可以写个groovy什么的来启动Framework,指定需要加载的bundle什么的。
 这个规范还是有点意思的,至少实现了这个规范的Console出来后还是很爽的,比现在的好用很多了,而且功能也强大多了。
8、RFC 134 Declarative Services Update
这个部分由BJ Hargrave主导,只是对之前DS的一点小升级:
允许自定义activate方法和deactive方法,其中activate方法的参数必须是ComponentContext或BundleContext,两个都存在也可以,而deactive方法的参数必须是int/Integer或ComponentContext或BundleContext,或三者的任意组合,其中int是指deactive的原因,这点确实比以前好,可以知道原因了。
 Service-Component属性值支持通配符了,这点真的太好了,我想用过Service-Component来指定加载component文件的同学都深有感触吧,以后就可以这么写了 Service-Component: OSGi-INF/*.xml
 Component配置中name属性变为可选项;
 XML Scheme namespaces改变为:http://www.osgi.org/xmlns/scr/v1.1.0。
-----------------------------------------华丽的分隔线-----------------------------------------
说完上面这八点后,必须划一条华丽的分隔线出来了,为什么呢,因为以下的三点是OSGi规范中里程碑式的动作,也算是EEG的动作终于要开始见成效了,以下三个规范是OSGi以往完全不存在的,也是为了企业应用而增加的,这样OSGi能够更好的被使用到企业应用中了。
1、RFC 98 Transactions in OSGi
这个部分主要由Peter Kriens和Pavlin Dobrev主导,所以这不是EEG的工作体现,这个部分是企业应用领域的同学们期待了很久的,不过最后的解决方案貌似会让大家有些失望,最后的解决方案是使用JTA来进行实现。
传说中的更强的版本需要等待EEG提交到OSGi R5中。
2、RFC 119 Distributed OSGi
这个部分主要由IONA的Eric Newcomer和David Bosschaert主导,这个部分我期待已久,IONA作为基于OSGi实现分布式应用的先行者,确实有资格来做这块的规范。
这个规范的目标是:
部署在JVM中的OSGi Bundle可以调用其他本地或远程JVM中的OSGi Service;
部署在JVM中的OSGi Bundle可以调用其他本地或远程中非OSGi容器中的Service;
其他程序可以调用JVM中的OSGi Service;
说实话,对于规范中提出的做法,我持保留意见,规范中的做法是增加一个Distribution Software,由这个Distribution Software来负责对外提供各种各样的访问OSGi Service的方法,例如RMI、SOAP等等,另外,增加一个Discovery service,负责到指定的地址上去寻找OSGi Service。
看过规范后,发现和自己想象的还是有一定的差距的,不过也是,分布式OSGi要做成规范我觉得还是比较困难的,毕竟分布式后各家公司关注的点就不同了,所以我还是认为Single JVM使用OSGi,然后分布式就各家根据各自的需求去实现,貌似这也是为什么SOA要落地做实现规范很难的原因,只能是架构层次的指导,其实我是比较希望OSGi规范中能增加一个OSGi本地方式提供给其他程序调用的方法,例如让我可以在webwork中调用(就像spring的ApplicationContext一样)、spring中调用,当然,自己做也可以做到,只是如果能被列入规范就更好了,不过仍然非常希望这个规范能帮助部分人,至少这样使用OSGi的人还是会再度增加。
3、RFC 124 A Component Model for OSGi
这个部分由SpringSource的CTO:Adrian Colyer主导,真没想到这个会被列入OSGi规范,因为觉得OSGi的Service-Oriented Component Model已经够强了,那么来看看这个规范到底做了些什么吧。
这个规范其实就是Spring-DM的规范,因为对Spring-DM还算熟悉,所以也只是粗略的看了下规范,不想在这里多讲,而且不可否认,Spring-DM给OSGi进入企业应用领域确实带来了很多的好处,只是我觉得这个规范的标题起的有点大了,好像是给OSGi新提出来的一样,:(。

享受完这道大餐后,应该说或多或少还是有些失望吧,毕竟最关注的两个规范:RFC 66,没出现;RFC 119,一般般,其他的规范嘛,更多的是一种锦上添花,:),不过仍然是进步,所以还是值得期待的,想想Console、Bundle Tracker、DS Update,也满足了,:)

ps:在最新OSGi官方的blog上,Peter相当兴奋的写到了一件事情,是关于各家Application Servers厂商都公开发布新闻稿,说明其AS是运行在OSGi或兼容OSGi的,其中包括有:IBM、Oracle weblogic、Paremus、Prosyst、JBoss、SpringSource、Sun Glassfish,同时Oracle和SAP都宣布将采用OSGi作为其下一代AS的基础,虽然这些厂商用OSGi来做AS已经是很早以前就公开的事了,不过第一次这么多厂商一起来发布新闻稿来讲这件事情还真的挺壮观的,也说明了OSGi真的成为了AS界事实的工业标准了。

OSGi R 4.2 Draft下载地址:
http://www.osgi.org/download/osgi-4.2-early-draft.pdf
让Peter兴奋的那篇文章,文章里面还有各家厂商阐述采用OSGi的理由以及对OSGi的评价:
http://www.earthtimes.org/articles/show/world-leading-enterprise-application-server-providers,541827.shtml

分享到:
评论

相关推荐

    osgi4.2 规范

    OSGi4.2是该规范的一个重要版本,它引入了许多改进和新特性,旨在增强服务的发现、管理和交互能力。在这个描述中,我们有三个PDF文档,分别名为“r4.cmpn.pdf”、“r4.core.pdf”和“r4.enterprise.pdf”,它们可能...

    OSGi 4.2 API手册

    2009年9月16日发布的OSGi R4 V4.2.0规范中的javadoc

    osgi规范r4..

    标题:osgi规范r4 描述与标签:osgi规范 知识点详解: 1. **OSGi Service Platform**:OSGi(Open Services Gateway Initiative)服务平台是用于构建动态、模块化Java应用程序的一种框架。它允许在运行时安装、...

    OSGI原理与最佳实践(扫描版,带目录).pdf

    OSGi原理与最佳实践基于作者多年使用0SGi的经验而编写,涵盖了0SGi从/kfqN深入的知识体系,从OSGi的简介开始,介绍OSGi的作用及基本概念;其后进入OSGi实战,...第11章 先睹为快:OSGi R4.2草稿版 第12章 OSGi展望

    org.eclipse.osgi_3.7.0.v20110613及源码

    此版本的org.eclipse.osgi是2011年6月发布的一个稳定版本,它包含了OSGi R4.2规范的实现。R4.2引入了对Java 6的支持,增强了服务注册表的查询能力,以及对动态模块的更灵活管理。 四、源码分析 org.eclipse.osgi-...

    未来10年:OSGi、Spring-DM.docx

    OSGi 4.2版本的发布标志着OSGi框架的成熟和完善。该版本提供了更好的模块化、动态性和灵活性,解决了Java EE开发及部署模型的局限性。 加强企业级特性: OSGi 4.2版本提供了加强的企业级特性,包括: *保护原有...

    spring osgi相关资源

    1. 支持多种OSGi标准:包括R4.2和R4.3规范。 2. 集成了管理工具:允许用户通过Web界面或命令行工具管理OSGi服务和应用。 3. 提供了丰富的库支持:包含了Spring框架、Hibernate、Tomcat等常见库,方便开发和部署。 ...

    利用R-OSGi实现分布式OSGi应用

    利用R-OSGi实现分布式OSGi应用 本文通过介绍传统 OSGi 应用程序及 R-OSGi 的实现方式入手,阐述了 R-OSGi 对于 OSGi 规范的实现方式。然后通过一个简单的功能实现由浅入深地讲述传统 OSGi 和 R-OSGi 上的两种不同...

    httpcomponents-client-4.2-alpha1-osgi-bin.zip

    标题中的"httpcomponents-client-4.2-alpha1-osgi-bin.zip"是一个开源软件包,它包含了Apache HTTP客户端组件的4.2 Alpha1版本,专为OSGi(Open Service Gateway Initiative)框架设计。OSGi是一种Java模块化系统,...

    基于java的开发源码-OSGi 分布式通讯组件 R-OSGi.zip

    基于java的开发源码-OSGi 分布式通讯组件 R-OSGi.zip 基于java的开发源码-OSGi 分布式通讯组件 R-OSGi.zip 基于java的开发源码-OSGi 分布式通讯组件 R-OSGi.zip 基于java的开发源码-OSGi 分布式通讯组件 R-OSGi.zip ...

    edu.northwestern.bioinformatics.osgi.csmapi-4.2.jar

    jar包,官方版本,自测可用

    OSGI 开发文档中文的

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

    OSGI 实例eclipse插件开发

    首先,Eclipse是一个开放源代码的集成开发环境(IDE),它支持多种编程语言的开发,而OSGI则为Eclipse提供了一个强大的插件系统。通过OSGI,开发者可以创建独立、可重用的插件,这些插件可以互相交互并与其他Eclipse...

    httpcomponents-client-4.2-alpha1-osgi-bin.tar.gz

    标题 "httpcomponents-client-4.2-alpha1-osgi-bin.tar.gz" 指的是一个开源项目 Apache HttpClient 的特定版本的二进制发行版,该版本是4.2 Alpha1,并且是为OSGi(Open Service Gateway Initiative)环境打包的。...

    osgi介绍osgi介绍

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

    OSGi 分布式通讯组件 R-OSGi

    **OSGi 分布式通讯组件 R-OSGi 知识详解** OSGi(Open Services Gateway Initiative)是一种Java模块化系统,旨在解决Java应用程序的复杂性和依赖性管理问题。它允许开发者将应用程序分解为一系列可独立更新和管理...

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

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

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

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

    OSGi入门教程(OSGi Introduce)

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

Global site tag (gtag.js) - Google Analytics