J2EE的企业应用十分地广泛和成熟,但在模块化方面还缺乏合适的解决方案,OSGI则正好可以弥补这方面的缺憾。但OSGI又偏偏是个底层的元素,如果要使J2EE和OSGI结合起来,就需要将J2EE应用从底层开始改造,就如你想将旧楼改造成更高的楼,需要重新将地基弄坚实点一样。
为了能让OSGI适应企业应用开发的需要,OSGI制定了一些企业开发规范,将J2EE己有的DI,持久化,事务等等好的东西都纳入其中。
Aries是Apache的一个开源项目,它分为很多子项目,都是实现了OSGI在企业应用方面的规范,例如:Aries blueprint container,Aries JPA container等等。
首先,Aries blueprint container是用于OSGI DI(IOC)的一套开源实现。Blueprint是OSGI定义的一个规范,它是来源于鼎鼎大名的spring。spring为了支持OSGI,发展一个叫spring dynamic module(spring DM)的项目,但估计是因为spring实现本身有些在classloader方面与OSGI格格不入的原因(这是我个人的看法,大家别嘘我),spring DM转给了eclipse,发展出了virgo.
而OSGI则从spring DM中抽象出blueprint规范出来。Aries blueprint container则是这个规范的一种实现。和传统spring一样,blueprint可以在bean里注入依赖。除此之外,blueprint还可以实现OSGI服务的发布和引用,支持OSGI的服务引用的注入,而且这种依赖的注入是动态的,也就是说你可以将很多OSGI服务动态地组合成更粗粒度的OSGI服务。
Blueprint和spring十分相似,同样采用XML的方式来组装应用(当然也有用annotation的方式来实现的)。在Aries blueprint container里,将Blueprint的XML配置文档放在Bundle里的OSGI/blueprint目录下,bundle就会被Aries blueprint container认为是个blueprint的应用,这里的XML文档就会被解析,并按XML的内容来组装应用,其中的服务引用的动态性,都会由container来维护。在Servicemix里,甚至可以直接解析一个blueprint的XML文档,而不需要将它放进bundle里。
除了DI外,在Servicemix里,blueprint还被用于camel路由的定义等方面,这很大程度扩大了blueprint的应用范围。
分享到:
相关推荐
Apache Aries项目是Apache软件基金会的一个开源项目,它旨在提供OSGi企业级应用所需的工具和容器,支持OSGi应用程序的开发、部署和运行。通过使用Aries,开发者可以更方便地利用OSGi的强大功能,比如服务动态发现、...
8. **社区与资源**:参与OSGi社区,获取最新的资讯和技术支持,利用开源项目如Apache Aries、Blueprint等来加速开发。 "OSGi原理与最佳实践"这本书可能会详细讲解以上各个方面,并可能包含实例代码和实战经验分享,...
Apache Aries是基于OSGi的一个开源项目,它提供了一组标准的服务和工具,用于简化基于OSGi的企业应用开发。通过使用这些工具和服务,开发者可以快速实现应用的模块化,并与现有的Java EE基础设施结合。 ...
1. **Apache Aries**:这是一个致力于Java模块化系统的开源项目,包括对OSGi的支持。 2. **JMX(Java Management Extensions)**:JMX是一种标准框架,用于管理和监控Java应用程序及其组件。 3. **Blueprint API**:...
8. **企业应用集成**:OSGi被广泛应用于大型企业级应用,如Spring Dynamic Modules(Spring DM)和Apache Karaf,它们利用OSGi的特性来构建灵活、可扩展的应用平台。 9. **开发实践**:使用OSGi开发时,需要注意...
CXF 框架是一种基于 Servlet 技术的 SOA 应用开发框架,要正常运行基于 CXF 应用框架开发的企业应用,除了 CXF 框架本身之外,还需要 JDK 和 Servlet 容器的支持。CXF 继承了 Celtix 和 XFire 两大开源项目的精华,...
12. **Aries**: Aries致力于提供OSGi的可插拔框架,帮助构建应用程序。 13. **Avro**: Avro是序列化框架,用于数据序列化和跨语言通信,常用于Hadoop生态系统中。 14. **Axis2**: Axis2是Apache的Web服务框架,...
1. **Apache Aries Project Activator**:Activator是Apache Aries项目的一部分,它提供了服务组件模型(Service Component Runtime, SCD)的轻量级实现,帮助开发者在OSGi环境中管理服务生命周期。 2. **JDBC...
Pax-Web和Pax-Web-Whiteboard是Apache Aries项目的一部分,它们是用于OSGi环境的Servlet容器。Pax-Web提供了Servlet 3.1兼容性,而Pax-Web-Whiteboard允许动态服务注册和发现,使得服务可以在运行时被添加到系统中。...