在企业应用中,持久化无疑是其中非常重要的一环,尽管OSGi的规范中也有负责持久数据、属性的服务规范,但对于企业应用而言那些显然是不够的,这里就以目前Java界流行的Hibernate为例来看看如何集成Hibernate到OSGi中,使得我们能够很简单在OSGi中使用Hibernate进行持久化。
首先来看看在传统的Java应用中,是如何使用Hibernate的,在不使用类似spring ORM Template这些封装了Hibernate东西的情况下,通常都是对外提供一个公共的封装了通用操作的Dao类,方便其他的Dao或者Service直接使用,在集成到OSGi中仍然希望是如此,那么这步怎么做呢?
非常的简单,在Eclipse中新建一个Plugin Project,然后把Hibernate所需要的lib放入project的lib中,将在传统Java应用中的象HibernateUtil、CommonDao这些类直接copy到当前project中,CommonDao是需要暴露给其他的Plugin project使用的,这里就需要将CommonDao的package加入到Project的export-package描述中了,接下来就是基于DS的方式对外提供CommonDao服务。
通过上面这样的方法就已经可以在基于OSGi的应用中使用CommonDao来完成持久化层的操作了,但这时会发现有个问题,在HibernateUtil这样的提供session管理的类中通常需要指定hibernatecfg.xml的位置,那么按照上面的做法自然是只能在上面的plugin project中放置这个文件了,在这个文件中配置了需要加载的po的映射文件,这样呢,就使得目前基于OSGi的应用需要将系统中所有的持久PO都放入这个Project中,而不是放入各自独立的Plugin Project中,而Dao则可以放到各自独立的Plugin Project中去,基于这样的方法,就构成了在基于OSGi的应用中通常是如下的方式:
还有一个方法就是每个Plugin Project维护自己的hibernate.cfg.xml,这样各自的po也就可以放在各自独立的Plugin project中,但这样的方法带来的问题就是各个Plugin project都会产生一个Hibernate SessionFactory,而且当系统的持久模型较为复杂的时候就更麻烦了,一个PO需要存在在几个Plugin Project中的时候,那样就会出现session中数据不一致的现象,所以暂时不去采用这种方法。
当然,相信将来会有更好的方式,需要解决的主要是统一加载各plugin project中的映射文件、PO的加载,在目前的情况下,要形成一个对外封闭的通用Hibernate Plugin Project还是很麻烦的,这种现象在集成MVC框架等等的时候都是会碰到的,这也反应了传统的开源框架在对于这种真正模块化的方式上的支撑仍然是非常不够的,传统的开源框架更多的停留于概念上的模块化。
分享到:
相关推荐
它最初是为了满足嵌入式设备和家庭网关的需求而设计的,但随着技术的发展,它的应用范围已经扩展到了更广泛的领域,包括企业级应用和服务。 ##### OSGi简介 OSGi是动态模块系统的一个工业标准,支持模块化、面向...
利用R-OSGi实现分布式OSGi应用 本文通过介绍传统 OSGi 应用程序及 R-OSGi 的实现方式入手,阐述了 R-OSGi 对于 OSGi 规范的实现方式。然后通过一个简单的功能实现由浅入深地讲述传统 OSGi 和 R-OSGi 上的两种不同...
扩展Tomcat支持OSGi应用服务项目文件。其项目为eclipse工程。项目说明请参见我的blog《扩展Tomcat支持OSGi应用服务》:http://blog.163.com/haizai219@126/blog/static/44412555200971223629869/
《企业OSGi实战》一书是OSGi企业应用的权威指南,它不仅涵盖了OSGi在企业环境中的应用,还提供了Java企业版(Java EE)与OSGi特性的融合方法。本书详细介绍了模块化编程的重要性,以及OSGi如何强化Java的模块化能力...
标题中的“基于SOA和ESB企业总线的OSGi企业级应用”是一个关于构建企业级软件系统的主题,其中涉及到三个关键概念:Service-Oriented Architecture(SOA)、Enterprise Service Bus(ESB)以及OSGi(Open Service ...
OSGi(Open Services Gateway Initiative)是一种动态模块化系统,最初为嵌入式设备和家庭网关设计,但现在已经广泛应用于各种需要模块化、服务导向和组件化架构的Java应用程序。OSGi的核心是其定义的一套规范,允许...
dm Server 是一个完全模块化部署的基于 OSGi 的 Java 服务器,为运行企业 Java 应用和 Spring 应用提供更加强大的灵活性和可靠性。 在本文中,我们将通过一个简单实例,介绍如何利用 Spring-DM 开发基于 OSGi 和 ...
### 基于OSGi和Spring开发企业级Web应用 #### OSGi与Spring结合的重要性 随着企业级应用复杂度的不断提升,对于软件架构的要求也越来越高。为了更好地满足这一需求,许多开发团队开始关注并采用OSGi(Open Service...
在OSGI(Open Service Gateway Initiative)应用环境中,整合Spring、Mybatis和Spring MVC可以实现模块化、可热更新和高效的企业级应用开发。OSGI是一个Java框架,它允许动态地安装、卸载和升级服务,提供了强大的...
OSGI(Open Services Gateway Initiative)是一种模块化系统和Java服务框架,它允许应用程序以模块化的方式构建,每个模块称为一个Bundle。在这个案例中,我们将探讨如何整合OSGI、Spring、Mybatis以及Spring MVC来...
在企业应用中,OSGi可以用来构建服务网关或者中间件,以支持微服务架构。 由于OSGi提供了一个严格的模块化标准,它特别适合于大型分布式系统的设计和开发。在这些系统中,服务可能需要频繁更新而不影响系统的其他...
Blueprint是OSGi联盟为简化在OSGi环境中创建和管理服务提供的一种规范,尤其适合于企业级Java应用程序。本文将深入探讨如何使用Blueprint Container规范来构建OSGi应用程序。 首先,Blueprint Container是OSGi ...
**OSGi企业版本的技术规范**是OSGi联盟为满足企业级应用的需求而制定的一套详细的技术标准与指导原则。该规范旨在提供一个灵活且可扩展的框架,支持复杂的企业级应用开发与部署。 #### 二、OSGi核心框架解析 #####...
这本书特别关注在企业环境中的OSGi应用,探讨了如何通过模块化和动态性提升企业应用的质量和效率。 书中分为几个部分,各部分的知识点如下: 第一部分:编程超越“Hello World” 1. OSGi与企业应用——为什么现在...
在基于OSGi和Spring开发Web应用中,OSGi(Open Services Gateway Initiative)是一个开放标准,用于创建模块化Java应用程序。它允许开发者将应用程序分解为独立的模块,称为bundle,每个bundle都包含自己的类路径、...
综上所述,基于OSGi和Spring开发Web应用不仅能够充分利用OSGi的模块化优势和Spring的依赖注入机制,还能借助dmServer和SpringSource应用平台等工具,实现更加高效、灵活和可靠的企业级应用开发。
Equinox OSGi是IBM公司开发的一个开源OSGi实现,它是Eclipse项目的一部分,用于创建模块化、可扩展且轻量级的应用程序。OSGi(Open Service Gateway Initiative)是一种Java平台的标准,它允许开发者将应用程序分解...
Java应用架构设计中,模块化模式与OSGi是两个关键概念,它们对于构建大型、可扩展且易于维护的系统至关重要。模块化模式使得代码组织更加有序,而OSGi(Open Services Gateway Initiative)则是一种实现模块化的动态...
在实际应用中,OSGi通常用于需要频繁更新或热部署的场景,如企业级应用服务器、嵌入式系统和物联网设备。比如,Eclipse IDE就是一个基于OSGi的项目,其插件系统就是OSGi的一个实例,用户可以方便地安装、更新和管理...
OSGi(Open Services Gateway Initiative)是一个基于Java语言的服务平台,提供了一种动态化、模块化的应用程序架构。在OSGi架构中,整个生命周期管理是十分重要的组成部分,它保证了应用能够动态地进行安装、启动、...