OSGi的4.2也刚刚发布其更新4.1规范了一些新的RFC。 那么,什么是特别新的使用OSGi 4.2,其中框架的支持4.2已经(或接近),以及为什么你应该针对针对4.2框架,而不是4.1的新发展?
Answer 1:
在大多数情况下,OSGi的点释放(如4.1-> 4.2)并没有真正改变很多现有的行为,所以它可以安全地说,如果你有依赖于4.1的应用程序,它会在4.2没有问题运行。 什么是新的是,一些项目已被标准化,其应当能够针对不同的OSGi引擎之间更好的互操作性(如春分 , 菲利克斯和Knopflerfish )。
事实上,虽然OSGi的4.2才正式发布于2009年9月16日,早期的草稿已供他人参考,所以产品(如春分3.5,菲利克斯1.8)的早期版本已经为标准的合理支持。 像802.11n产品,它们符合以前的草案,但期望是,他们将作为完全符合认证针对在不太遥远的未来的4.2版本。
那么,是什么在4.2新功能?
- 服务挂钩
- 框架内设立
并且,在纲要
- 远程服务
- 束跟踪
- 服务蓝图
服务挂钩
该服务挂钩API允许你拿起上发生的业务层的事件。 例如,你可以连接当一个服务请求,当一个服务交付的事件,等进入。 您还可以安排将没有交付的事件(例如,隐藏,你无权看事件),但不能更改任何事件(因为这将被传递复杂的类)。 服务挂钩的核心规范的一部分,因此,所有的OSGi版本将需要这是兼容的。
框架下水
尽管可以以编程方式从现有的Java应用程序启动一个OSGi例如,在你这样做的方法一直依赖于你使用的OSGi运行时。 特别是,配置项(如在哪里存储临时数据,什么束引导代表团政策应该是等)都在发动机专用的方式定义。 这是巩固上得到任何发射工具的框架设置的属性。
远程服务
远程服务API允许OGSI服务(可能在不同的机器)虚拟机之间的通信。 他们是如何沟通的确切机制(RMI,Web服务等)开放给供应商,所以它不像其他的分布式技术(如CORBA),它的传输格式特别规定的。 显然,分布式服务比本地的不同语义(通信错误,序列化问题),它是留给个人的服务,需要用户自行分配。
束跟踪
像在4.1之前的ServiceTracker的,该BundleTracker可以用来继续其捆绑出没于系统的眼睛。 这可以通过动态图形用户界面来显示的OSGi引擎不断变化的状态,没有任何平台的具体知识。
服务蓝图
蓝图服务类似于弹簧,因为它提供了用于配置束依赖注入机制。 在某些方面,它类似于声明式服务; 但是蓝图服务确实以不同的方式事情。 此外,与声明式服务(这只能对付这是目前服务),该蓝图的服务可以为服务,后来会在网上预先制作代理占位符。 然后调用该服务代理将阻塞,直到该服务可以填充(而不是回到“空”的声明式服务会做)。 如果您熟悉或熟悉Spring IOC和类似的依赖注入,那么蓝图服务将立即理解的。
Answer 2:
本文将详细介绍感兴趣的RFC。 报价,
首先一个必须注意的是这不是一个小版本的版本号可能建议。 4.2版本实际上比R4.1版本去年多方式显著。 在某些点上我甚至会说这是比R4版本更为重要,因为与一个使用变得更加的方式更容易,特别是对于没有OSGi的专家。
Answer 3:
早期变化在这里强调 。
特别是,RFC 119 - 分布式OSGi的特点是有趣:
该解决方案定义了分布式的OSGi处理,包括服务发现和获取,并从外部环境特征/功能的最小水平。
与合并EventAdmin
(41引入),将允许基于OSGi的分布式服务更容易实现(目前实施与ECF )
Answer 4:
不要声明式服务实际上将返回空当参考绑定不可用? 在春分,即使我将模式设置为动态,我的组件是从来没有实例化,如果它不能被“有线”。 我宁愿喜欢它设定为“空”照你这么说,这样我就可以有可选参考结合并使用动态发现...
另外,我想,当一个服务绑定(我有去捆绑情况下,获得服务引用,迭代和比较 - 不实用)轻松找到组件属性的可能性。 也许我失去了一些东西,但。