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的应用范围。
分享到:
相关推荐
标题中的“基于SOA和ESB企业总线的OSGi企业级应用”是一个关于构建企业级软件系统的主题,其中涉及到三个关键概念:Service-Oriented Architecture(SOA)、Enterprise Service Bus(ESB)以及OSGi(Open Service ...
OSGI(Open Services Gateway Initiative)是一种模块化系统和Java服务框架,它允许应用程序以模块化的方式构建,每个模块称为一个Bundle。在这个案例中,我们将探讨如何整合OSGI、Spring、Mybatis以及Spring MVC来...
**OSGi企业版本的技术规范**是OSGi联盟为满足企业级应用的需求而制定的一套详细的技术标准与指导原则。该规范旨在提供一个灵活且可扩展的框架,支持复杂的企业级应用开发与部署。 #### 二、OSGi核心框架解析 #####...
Apache Aries项目是Apache软件基金会的一个开源项目,它旨在提供OSGi企业级应用所需的工具和容器,支持OSGi应用程序的开发、部署和运行。通过使用Aries,开发者可以更方便地利用OSGi的强大功能,比如服务动态发现、...
在企业应用中,OSGi可以用来构建服务网关或者中间件,以支持微服务架构。 由于OSGi提供了一个严格的模块化标准,它特别适合于大型分布式系统的设计和开发。在这些系统中,服务可能需要频繁更新而不影响系统的其他...
1. **Equinox**:这是Eclipse项目中使用的OSGi框架,也是Eclipse强大插件体系的基础。由于得到了IBM的支持,Equinox框架在稳定性和可靠性方面表现优异,因此成为许多开发者的首选。 2. **Makewave Knopflerfish**:...
### 基于OSGi和Spring开发企业级Web应用 #### OSGi与Spring结合的重要性 随着企业级应用复杂度的不断提升,对于软件架构的要求也越来越高。为了更好地满足这一需求,许多开发团队开始关注并采用OSGi(Open Service...
《企业OSGi实战》一书是OSGi企业应用的权威指南,它不仅涵盖了OSGi在企业环境中的应用,还提供了Java企业版(Java EE)与OSGi特性的融合方法。本书详细介绍了模块化编程的重要性,以及OSGi如何强化Java的模块化能力...
6. **社区与资源**:介绍OSGI社区,相关的开源项目,以及获取更多帮助和信息的渠道。 7. **案例研究**:分析实际项目中的OSGI应用,展示其在解决特定问题上的效果。 通过这两本书的学习,读者不仅能掌握OSGI的基本...
Java应用架构设计中,模块化模式与OSGi是两个关键概念,它们对于构建大型、可扩展且易于维护的系统至关重要。模块化模式使得代码组织更加有序,而OSGi(Open Services Gateway Initiative)则是一种实现模块化的动态...
8. **社区与资源**:参与OSGi社区,获取最新的资讯和技术支持,利用开源项目如Apache Aries、Blueprint等来加速开发。 "OSGi原理与最佳实践"这本书可能会详细讲解以上各个方面,并可能包含实例代码和实战经验分享,...
dm Server 是一个完全模块化部署的基于 OSGi 的 Java 服务器,为运行企业 Java 应用和 Spring 应用提供更加强大的灵活性和可靠性。 在本文中,我们将通过一个简单实例,介绍如何利用 Spring-DM 开发基于 OSGi 和 ...
利用R-OSGi实现分布式OSGi应用 本文通过介绍传统 OSGi 应用程序及 R-OSGi 的实现方式入手,阐述了 R-OSGi 对于 OSGi 规范的实现方式。然后通过一个简单的功能实现由浅入深地讲述传统 OSGi 和 R-OSGi 上的两种不同...
### 开发一个简单的 OSGi Web 应用实例 #### 一、项目概述 本教程旨在通过一个具体的示例来介绍如何使用OSGi框架开发一个简单的Web应用。这个示例应用能够计算两个数字的和或乘积,并展示了OSGi bundle的动态部署...
总结,通过以上步骤,我们可以在Eclipse环境下构建一个结合了Spring和OSGi的项目,利用Spring的强大功能和OSGi的模块化优势,打造灵活、可扩展的企业级应用。这个过程涉及到了源码的编写、工具的使用,以及模块化...
扩展Tomcat支持OSGi应用服务项目文件。其项目为eclipse工程。项目说明请参见我的blog《扩展Tomcat支持OSGi应用服务》:http://blog.163.com/haizai219@126/blog/static/44412555200971223629869/
Java应用架构设计中,模块化模式与OSGi是两种重要的技术,它们对于构建...在深入学习这两个概念时,可以参考《Java应用架构设计模块化模式与OSGi》这本书,它将详细阐述这两者的原理、实践方法以及在实际项目中的应用。
7. **企业应用集成**:OSGi在企业级应用中发挥着重要作用,尤其是在大型分布式系统中。它可以用来构建微服务架构,简化组件间的通信,提高系统的可扩展性和可维护性。 8. **最佳实践**:书中可能涵盖了如何有效地...
Spring-DM,即Spring Dynamic Modules,是Spring官方在2008年推出的项目,旨在将Spring框架与OSGi模块化平台相结合,为Java开发者提供了一套全面的工具和API,以支持在OSGi环境中开发、部署和管理Spring应用程序。...
总结来说,OSGi与Web容器的整合提供了一种强大的方式来构建和部署Web应用,使得应用组件可以独立升级和替换,减少了应用的耦合度。通过选择合适的工具和方法,开发者可以充分利用OSGi的动态性和灵活性,创建更健壮、...