2007-04-02

OSGi笔记(3)--模块化

关键字: OSGi
模块化是OSGi框架的主要部分之一,说到模块化,主要还是指bundle,以及对bundle之间关系的处理。

bundle的主要组成部分就是类(class)文件,class文件是bundle的可执行部分。在java中,类文件被组织到包里,每个包都有唯一的名字。

限制类仅对本地访问(私有bundle)是最简单的解决方法。

共享类使得bundle包含一些给其他bundle的库。可以依赖本地功能(或是根据需要下载)使得bundle可以更灵活和更小巧,从这个角度来看,
共享类是最好的解决。

然而,共享类意味着多个bundle可以提供同一个类,潜在的导致不同bundle中同一个类的版本不兼容问题。一个相关的问题就是对其他bundle的依赖。同样也有可能不同套的bundle使用同一个类,但需要该类的不同版本。OSGi用严格的规范和确定的方式来处理所有这些问题。

每个bundle都可以输入输出包(packages)。输出意味着这个包(一系列类)可以被其他的bundle使用。输入意味着需要使用的这个包是来自其他bundle的。如果多bundles同时输出相同的包(可能是不同的版本),则框架将为每个输入该包的bundle选择一个合适版本。

一个输出的package总是有唯一的版本。而输入者可以指定一个可以接受的版本范围。Framework尽力最小化输出的数量,但它支持同一个类的多版本的多类空间可以在同一时间使用。为了防止冲突,Framework要确保bundle注意获取class cast Exception.


如果bundle输出一个java包,后来这个bundle被卸载了,OSGi Framework确保输入者都重起,以便它们能够和新的输出包绑定。这整个过程对bundle而言是透明的,因为是在它们停止的时候进行的。


JVM中为多个独立的bundle管理java类导入是很重要的任务。这个复杂领域里不同厂家的依从关系是由特定的小细节来完成的,这是OSGi Framework在所有情况下必须要做的。


评论
hatalf 2007-07-16
现在做到OSGI和HIBERNATE整合这块了,郁闷的很,由于2个classload运行在不同的JVM的缘故,老是找不到类.OSGI好是好,但是由于做的过程中老出现问题,要么和这个结合不好,要么和那个不能互相调用,唉....总以为要正常整合的时候突然出个大问题又要慢慢来...时间啊....都被错误冲走了...
mochow 2007-07-10
我看的就是英文的,OSGI自己的文档。不过发现还是有技术人员的老毛病,写概要写着写着就深入到编程细节去了,没有全局观。
hatalf 2007-07-09
刚刚把项目用到OSGI里,结合tomcat做的~希望有时间能写点东西上来呵呵~ 建议多看英文资料。。。那个中文的。。。我寒。。IBM的和equinox的都比较不错~还有neil的blog~peter的,都是学习的好地方!
mochow 2007-06-25
内容少是因为花的时间少。另外,这都是看概要的笔记,还没深入呢。


俺真是太不勤奋了,以后要继续学习。
hatalf 2007-06-22
没次的内容有点少,而且不够到位,建议你看看勤劳的蜜蜂的blog上对OSGI的讲解,我个人对你的笔记(1)比较赞赏,希望继续!最好是写出一个实际的例子来慢慢分析,代码少点就比较好.
发表评论

您还没有登录,请登录后发表评论

mochow
搜索本博客
我的相册
40323464-cf8c-3487-ae9e-049cab518398-thumb
泷择二
共 3 张
存档
最新评论