spring,最近几年超热的full-stack Java/JEE 应用框架,随着2.0的释出,spring更加完善和强大.OSGI这一大牛,名气就没有那么大,但说起来eclipse大家就都如雷贯耳了,Eclipse 3.0后采用的是OSGI来作为其Plugin Architecture实现的依据.
说说osgi,OSGI概念中主要分为了Bundle和Service,可以认为Bundle是一个模块的管理器,主要是通过BundleActivator管理模块的 生命周期,而Service则是这个模块可暴露对外的服务对象,这里体现了OSGI和传统的Plugin Framework不同的一个地方,管理和静态结构分开,在OSGI中通过在manifest.mf文件中增加一些内容来发布Bundle,在其中描述了 Bundle的提供商、版本、唯一ID、classpath、暴露对外的包、所依赖的包;每个Bundle拥有自己的ClassLoader以及 context,通过context可进行服务的注册、卸载等,这些操作都会通过事件机制广播给相应的其他的Bundle;一般来说都为通过在 Bundle中编写初始需要注册的服务的方法来完成Bundle可供外部使用的服务的暴露功能;如需要调用其他Plugin提供的服务可通过 context的getServiceReference先获取Service的句柄,再通过context.getService (ServiceReference)的方法获取Service的实体。
通过对OSGI的认识,就可以窥探Spring and OSGi的一系列优点:
把低耦合的应用程序"模块化";
多个版本的应用同时部署,动态选择(运行期);
运行期多模块(服务)的替换;
运行期动态部署,更新或反部署模块;
应用spring配置,装配模块;
用简单和熟悉的编程方式开发具有osgi特征的程序
.........
让我们拭目以待这两种很酷的技术结合在一起的产物诞生吧!
Spring and OSGi相关内容: http://www.osgi.org/blog/2006/08/osgi-and-spring_29.html
osgi还有一个opendoc,可以去javaeye或满江红站点找到
说说osgi,OSGI概念中主要分为了Bundle和Service,可以认为Bundle是一个模块的管理器,主要是通过BundleActivator管理模块的 生命周期,而Service则是这个模块可暴露对外的服务对象,这里体现了OSGI和传统的Plugin Framework不同的一个地方,管理和静态结构分开,在OSGI中通过在manifest.mf文件中增加一些内容来发布Bundle,在其中描述了 Bundle的提供商、版本、唯一ID、classpath、暴露对外的包、所依赖的包;每个Bundle拥有自己的ClassLoader以及 context,通过context可进行服务的注册、卸载等,这些操作都会通过事件机制广播给相应的其他的Bundle;一般来说都为通过在 Bundle中编写初始需要注册的服务的方法来完成Bundle可供外部使用的服务的暴露功能;如需要调用其他Plugin提供的服务可通过 context的getServiceReference先获取Service的句柄,再通过context.getService (ServiceReference)的方法获取Service的实体。
通过对OSGI的认识,就可以窥探Spring and OSGi的一系列优点:
把低耦合的应用程序"模块化";
多个版本的应用同时部署,动态选择(运行期);
运行期多模块(服务)的替换;
运行期动态部署,更新或反部署模块;
应用spring配置,装配模块;
用简单和熟悉的编程方式开发具有osgi特征的程序
.........
让我们拭目以待这两种很酷的技术结合在一起的产物诞生吧!
Spring and OSGi相关内容: http://www.osgi.org/blog/2006/08/osgi-and-spring_29.html
osgi还有一个opendoc,可以去javaeye或满江红站点找到