创新触手可及:为使用企业级OSGi做好准备了吗?

IBM 和 OSGi

OSGi 是 Java 语言的动态模块系统。IBM 是 OSGi 联盟的初始成员之一,该联盟旨在促进 OSGi 服务平台的广泛采用,确保通过网络交付和管理的应用程序和服务的互操作性。多年来,IBM 一直在 IBM Lotus 和 WebSphere 产品中使用 OSGi 技术。事实上,从 IBM WebSphere Application Server 6.1 版本就开始使用 OSGi 了。用户看不到它,因为使用 OSGi 是为了实现底层应用程序服务器架构的模块化,从而使其易于开发和支持。WebSphere Foundation 一直在使用 OSGi 改进 IBM 产品, 现在 WebSphere Application Server V7 Feature Pack for OSGi Applications and Java Persistence API (JPA) 2.0 (以下简称为 OSGi 功能包)支持您使用 OSGi 改进自己的应用程序和服务。

引进企业级 OSGi 应用程序编程模型的关键因素之一是确保它是整个行业认可的标准。这是 OSGi 联盟的企业专家组 (EEG) 的焦点。该企业专家组的专家由来自 Oracle、SAP、VMWare、Redhat、Progress 和 IBM 等的代表组成。许多供应商都向该组提供专业经验,以确保任何标准都能够得到广泛支持。

为什么是企业级 OSGi?

在介绍 OSGi 功能包的重要内容之前,值得花些时间概述一下它有助于解决的问题。

值得一提的是,组织使用 WebSphere Application Server 的功能部署和管理大量应用程序。这些应用程序通常包含公共库。在这种情况下,应用程序开发人员在其应用程序中包含相同的库就很正常。尽管这是每个应用程序获得预期库的一种安全方法,但是此策略可能会占用过量内存并使应用程序更新变得比较困难。软件供应商提供了解决此问题的解决方案,但他们是针对供应商的,并且会导致管理时间成本增加。

有时会在应用程序中使用供应商库,通常开发人员无法控制这些库的依赖关系。所以当一个应用程序使用的两个库具有不同且不兼容的内部依赖关系时,就会出现问题。例如,一个库可能需要 ASM 3.0,而同一应用程序使用的另一个库可能需要 ASM 2.0。要解决这种问题,通常需要更改代码。

总的说来,这两个问题在 Java EE 中通常都可以解决,那么为什么要忍受 OSGi 可以解决的问题呢?

OSGi 联盟的 EEG(企业专家组)成立于 2007 年,并且制定了 OSGi 功能包实现规范。EEG 的目的是查看最常用的 Java EE 技术(例如,JPA、JTA、JNDI 和 JMX 等),并构建使用部署到 OSGi 框架的应用程序绑定技术的标准方法。

开源和 OSGi

去年启动了提供 OSGi 企业规范实现的两个开源项目。Apache Aries 孵化器项目在 2009 年 9 月启动,并具有由 Apache Geronimo 社区开发的 Blueprint 实现。2009 年启动的企业模块项目(Enterprise Modules Project)由 Eclipse Foundation 主办,该项目与 Aries 项目的目标大致相同。

在很短的时间内,就建立了许多与 Apache Aries 相关的活跃团体。参与者包括来自 IBM、Progress、RedHat、Ericsson、SAP、Prosyst 和 LinkedIn 等的个人。由于 Blueprint 的最初贡献,JTA、 JPA、JNDI 和 JMX 的组件都已添加。演示如何使用这些技术(包括 Blog Sample 和 Aries Trader 应用程序)的示例是项目的重要部分。

Aries 积极开发的另一个领域是 “应用程序” 概念,这是将 bundle 分组为单个应用程序或 Enterprise Bundle Archive (EBA) 的一种方式。

OSGi 功能包

OSGi 功能包提供了一个整合应用程序框架,有助于 Java EE 应用程序开发人员利用 OSGi 企业架构。该功能包整合了 Apache Aries 开发的组件和 WebSphere Application Server 运行时与管理。(JPA 2.0 支持也是功能包的一部分,但在本文中不会详细介绍它。)

具体来说,功能包交付 OSGi Blueprint Container 规范的开放社区和基于标准的实现,并且具有将应用程序组装、部署和管理为 OSGi bundle 版本集合的能力。常见 Web 应用程序的模块设计、简单的基于 POJO 的组件和高效数据访问需求,都可以使用 OSGi 应用程序和功能包的 JPA 2.0 组件解决。

功能包的一些主要功能如下所述。下面将详细介绍这些功能以及其他一些功能。

Enterprise Bundle Archives

组成 OSGi 应用程序的 bundle 经过合理组装,可形成可部署的 Enterprise Bundle Archive 或 EBA。开发 Java EE 应用程序时,通常会将所有模块库(应用程序内容)放在 EAR 文件中。相反,尽管 EBA 中的应用程序元数据描述应用程序内容,但是无需在 EBA 中包含二进制内容。EBA 可以仅指从 bundle 库的相应阶段获得的 bundle。最常见的情形可能包括在 EBA 中放置其他 bundle 并包含其他内容。例如,Web 模块是应用程序的主要部分,所以它们自然位于 EBA 文件中;而非应用程序特定内容(比如共享库)从 bundle 库获得可能会更好。后续文章将探讨 bundle 库,以及如何且何时提供 bundle。

Web 应用程序

正如 OSGi Web Container 规范定义的那样,OSGi 应用程序的 Web 内容仅是具有其他 OSGi 元数据的 Web 模块。该规范定义了 Web 应用程序 bundle 所需的元数据。部署时,WebSphere Application Server 将 EBA 中的 WAR 文件转换为 OSGi bundle。将 Web 模块作为 bundle 部署的优势是,可以将其依靠的库从 WAR 移动到集中式、托管的、版本化的 bundle 库中,在 WebSphere Application Server 部署流程中使用该库。

Blueprint

OSGi 服务平台企业规范 介绍了 Java EE 中一种称为 Blueprint 的主要技术,这是 Spring Dependency Injection 模型的标准化。尽管企业级 OSGi 应用程序不需要使用 Blueprint,但是 WebSphere Application Server 实现提供了许多功能,这些功能使 Blueprint 成为开发人员乐于使用的一种技术。

OSGI 功能包的 Blueprint 实现提供了用户期望 Dependency Injection (DI) 容器拥有的功能;例如,使用 POJO 进行构建的能力,以及使容器控制那些 POJO 生命周期的能力。通过 DI 容器(比如 Spring Framework)进行 Blueprint 实现的一个好处是 OSGi 整合。这意味着发布服务的 bundle 稍后可以被注入其他组件甚至是其他 bundle 中。此依赖性注入模型还支持在 Java EE 或 OSGi 运行时以外的时间进行单元测试。

在 OSGi 功能包中实现的 Blueprint 容器是中间件的一部分,而不再是应用程序的一部分,这就为应用程序员消除了一个令人头疼的问题。

JPA 持久化

OpenJPA 是 WebSphere Application Server 默认的持久化提供者。OSGi 功能包包括 JPA 2.0 支持,所以开发人员可以使用 WebSphere Application Server V7 中现有的 JPA 1.0 支持或 OSGi 应用程序中的新 JPA 2.0 支持。

除了 OSGi 服务平台企业规范中介绍的 JPA 模型,功能包还包括扩展的 JPA 支持,向 Blueprint 组件提供由容器完全托管的 JPA,从而向目前正在使用 Java EE 的 JPA 的应用程序开发人员提供一种熟悉的开发体验。

此功能包还包括对 Blueprint 的扩展,所以容器可以将持久化单元和上下文注入到 Blueprint bean 中。EJB 中应用程序开发人员熟悉的事务性行为同样存在于 OSGi 功能包中。

结束语

寻找可靠和已验证的模块化技术的企业 Web 应用程序开发人员,已经有很多都转向了使用 OSGi。IBM WebSphere Application Server V7 Feature Pack for OSGi Applications and Java Persistence API (JPA) 2.0 提供了一种环境,该环境支持 Java EE 开发人员使用 OSGi 功能构建应用程序。

用户对 OSGi 功能包的反馈、对 Apache Aries 的兴趣,以及对现有 WebSphere Application Server 的兴趣表明,Java EE 开发人员乐于使用 OSGi 技术,并期待它提供的许多好处。

时间: 2024-11-08 23:27:33

创新触手可及:为使用企业级OSGi做好准备了吗?的相关文章

创新触手可及:一个IBM测试机构如何使用WebSphere CloudBurst来提高效率和敏捷

创新触手可及:一个IBM测试机构如何使用WebSphere CloudBurst来提高效率和敏捷性 每一期创新触手可及从开发人员和从业人员的角度提供了有关新兴技术主题的新信息和讨论,并探秘了前沿 IBM WebSphere 产品的幕后知识. "给我讲个案例" 尽管在实验室工作,我们很珍惜走出去与我们的客户直接对话的机会.最近,我们的许多谈话都围绕云计算,具体而言,是 IBM WebSphere CloudBurst Appliance 和 IBM WebSphere Applicati

创新触手可及:WebSphere CloudBurst V2.0新特性

每一篇创新触手可及系列的文章都会从开发人员和其他从业人员的角度为您介绍关于新兴技术的信息和讨论,以及对前沿的 IBM WebSphere 产品的幕后观点. 新固件,新特性 IBM WebSphere CloudBurst Appliance firmware V2.0 不缺乏新特性.为了激发您对此新版本的兴趣,本文将带您概括地领略一下最重要的几个新特性.后续文章将会详细介绍这些新功能. 那么,我们现在就开始吧! 动态虚拟机操作 在版本 2.0 之前,WebSphere CloudBurst 中虚

GlassFish OSGi-JavaEE (一) GlassFish与企业级OSGi开发

欢迎进入GlassFish OSGi-JavaEE专题!自从GlassFish v3开始,一个新的特性被加入到GlassFish中,那 就是GlassFish OSGi-JavaEE.本专题将分为九个部分向大家介绍GlassFish OSGi-Java EE相关的知识: Part1:对GlassFish OSGi-JavaEE做简单的介绍并简要叙述企业级的OSGi开发的现状. Part2: 理解GlassFish OSGi/WEB容器并开发和部署一个WEB 应用程序Bundle到GlassFis

使用WAS OSGi Feature Pack开发和部署OSGi Blueprint Service

使用WebSphere Application Server OSGi Feature Pack开发和部署OSGi Blueprint Service 引言 众所周知,OSGi 最初是 Open Service Gateway Initiative 的缩写,应用于家庭网络和移动嵌入式设备.而后,得益于遵循了 OSGi 规范来重构其插件机制的 eclipse 的迅猛发展和庞大的用户群,OSGi 也迅速的发展成为 Java 动态模块化系统的事实上的工业标准.另一方面,在企业应用领域,伴随着 OSGi

用OSGi应用程序开发和工作的最佳实践

简介 OSGi 模块性提供了标准机制来以 Java 应用程序应对共同挑战.在 2007 年 ,OSGi Alliance Enterprise Expert Group (EEG) 成立,以一个业务 Java 编 程模型的形式向业务应用程序开发人员引入 OSGi 基础设施.OSGi 应用程序和 IBM WebSphere Application Server 企业级服务质量共同为模块化 Web 应用程 序提供最完整和最健壮的业务服务器.您可以使用 WebSphere Application Se

使用Websphere Liberty Profile Server和Eclipse进行OSGi的软件开发

新一代的轻量级http://www.aliyun.com/zixun/aggregation/15818.html">应用服务器-- WebSphere Liberty Profile Server 不但在其自身的构建中采用了 OSGi 的开发模型,而且也支持程序员在 Liberty 中进行 OSGi 应用程序的开发和部署. 本文主要通过一个实例,向读者介绍了如何使用 Websphere Liberty Profile Server 和 Eclipse 进行 OSGi 的软件开发. 一些准

《深入理解OSGi:Equinox原理、应用与最佳实践》一1.2 为什么使用OSGi

1.2 为什么使用OSGi 没有什么技术是万能的,任何一门技术都有它的适用场景和最佳实践方法.OSGi不只是一门技术,更多的是一种做系统架构的工具和方法论,如果在不适用的场景中使用OSGi,或者在适用的场景中不恰当地使用OSGi,都会使整个系统产生架构级的缺陷.因此,了解什么时候该用OSGi是与学会如何使用OSGi同样重要的事情. 每个系统遇到的业务环境都是不一样的,笔者不希望以经验式的陈述去回答"什么时候该用OSGi"或 "为什么要使用OSGi"这样的问题,而试图

VMware推面向企业级云计算的vCloud计划

本文讲的是VMware推面向企业级云计算的vCloud计划,[IT168 报道]9月18日, VMware公司在VMworld 2008大会上公布了其vCloud计划,该计划通过集中虚拟数据中心和云服务提供商之间的按需计算容量,来支持现有和新应用程序的加载,实现企业级云计算.VMware vCloud计划得到了包括:英国电信(BT).Rackspace.塞维斯通信公司(SAVVIS).Sungard.T-Systems和Verizon Business在内的100多家业界合作伙伴的广泛支持,旨在

互联网·未来:科技创新助推逆城市化

中介交易 SEO诊断 淘宝客 云主机 技术大厅 最近的六年,互联网行业随着电子商务和移动互联的爆发式成长,正成为国民经济的重要推动力和整合力,互联网思维俨然成为各大商业会议上的流行关键词,然而,流行只是一个现象,我们需要透过现象看本质.面向未来地去看互联网.互联网毫无例外地渗透进任何领域,互联网创业也将更加个性化和细分化,而我比较感兴趣的维度是互联网能否助推逆城市化,能否推动人群的分布超越物理限制. 电商的发达让高品质零售服务深入城乡 无论是京东.阿里这样的电商企业,还是顺丰这样的快递企业,都在