转载地址:http://www.ibm.com/developerworks/cn/websphere/techjournal/1005_inreach/1005_inreach.html

简介:  在过去一年里,有很多关于 OSGi™ 企业级应用程序是否就绪的激烈辩论。OSGi 是一种已证实的且经过测试的技术,所以从这个意义上来说,它已经就绪有一段时间了。缺少的是 Java™ EE 程序员正确利用 OSGi 企业功能所需的工具和框架的规范与实现。最近发布的 OSGi Service Platform Enterprise Specification (4.2) 和 IBM® WebSphere® Application Server V7 Feature Pack for OSGi Applications and Java Persistence API (JPA) 2.0 改变了这一情况。下面将概述此新功能包以及其发展背后的原因。 本文来自于 IBM WebSphere Developer Technical Journal 中文版 。

每一期创新触手可及 从开发人员和从业人员的角度提供了有关新兴技术主题的新信息和讨论,并探秘了前沿 IBM® WebSphere® 产品的幕后知识。

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 技术,并期待它提供的许多好处。

<!-- CMA ID: 512082 --><!-- Site ID: 10 --><!-- XSLT stylesheet used to transform this file: dw-document-html-6.0.xsl -->

参考资料

学习

  • WebSphere Application Server V7 Feature Pack for OSGi Applications and Java Persistence API (JPA) 2.0
  • OSGi Alliance Specifications
  • Apache Aries
  • Apache Geronimo
  • IBM developerWorks 中国 WebSphere 专区 :为使用 WebSphere 产品的开发人员准备的技术信息和资料。这里提供产品下载、how-to 信息、支持资源以及免费技术库,包含 2000 多份技术文章、教程、最佳实践、IBM Redbook 和在线产品手册。

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

  1. 让创新触手可及,阿里云容器服务 ACK 发行版开放免费下载

    随着云原生正在成为数字经济创新基石,企业的云原生应用逐渐呈现出类型更加丰富.场景更加复杂的特点.这时,构建于中心云上的能力将越来越难以支撑企业架构敏捷.业务灵活创新等需求. 为了进一步拓展云的边界,让 ...

  2. 与伙伴同行,Serverless 让创新触手可及

    今天 Serverless 的方式真正意义上做到了云产品.云技术的开箱即用,企业和开发者不需要再关注底层的资源配置,更多地把精力放在业务系统的开发中. 4 月 26 日,在 2023 阿里云合作伙伴大 ...

  3. 大疆创新推出M30系列企业级无人机

    下一级企业无人机,具有您在消费级无人机上找不到的功能. 今天,无人机制造商大疆创新(DJI)推出了其新的经纬M30系列企业级无人机系列,而这具有那些飞行消费级无人机只能梦想的功能. M30系列有两个版 ...

  4. 业务与信息系统深度融合,改变业务运营和创新模式:阿里巴巴企业级互联网架构(Aliware)实践...

    摘要:本文的整理自2017云栖大会-南京峰会上阿里中间件高级架构师宁晓民的分享讲义,讲义主要介绍了 的业务发展历程,并分享了阿里巴巴互联网架构的实践经验,最后还结合实际案例对于企业级互联网架构Aliw ...

  5. 苹果战略管理分析_苹果不懈的战略与执行

    苹果战略管理分析 重点 (Top highlight) Apple's announcement of "Apple Silicon" is important for many ...

  6. osgi java web_基于OSGi和Spring开发企业级Web应用

    Spring 作为一个新的事实上的工业标准,OSGi已经受到了广泛的关注,就在不久前EclipseCon也发布企业级OSGi标准,而IBM以及Eclipse也宣称将大力发展Java模块化.Spring ...

  7. 【重磅】SAP 成立企业级创新营,建立面向初创公司和独角兽的创新合作伙伴生态

    SAP 的智能时代和体验时代 自1972年成立以来,SAP 始终致力于企业服务领域,并逐步发展为这一领域中的领导者.与许多人眼中的「传统 IT 厂商」印象不同的是,SAP 带领了众多企业完成了跨越半个 ...

  8. 技术解读|云上企业级存储——打开存储新维度,促进用户核心业务创新

    简介:将企业级存储和云的特点进行完美的融合是云上企业级存储的目标,它打开存储更多新的维度,在保障用户业务永续的同时,帮助用户更好的进行业务创新.本文属ESSD技术解读的总篇,总体介绍ESSD 云盘创新 ...

  9. 华为WeAutomate RPA产品首席规划师周为:企业数智化转型之路,RPA共创新价值

    近日,由中国电子技术标准化研究院.苏州市金融科技协会指导的第二届ISIG中国产业智能大会成功在上海召开.华为WeAutomate 产品首席规划师周为出席了此次盛会,并以<企业数智化转型之路,RP ...

最新文章

  1. 看雪 2016CrackMe 攻防大赛 - 1-Crack_Me-凉飕飕
  2. 编译原理——实验叁预习报告——基于YACC的TINY语法分析器的构建
  3. RMAN 目录管理维护
  4. opencv之解决Module opencv_ovis disabled because OGRE3D was not found
  5. XML内容要有根标签:Extra content at the end of the document
  6. css3中文参考手册
  7. html 背景透明颜色代码,html,body设置背景色透明
  8. MES系统业务需求收集及整理
  9. 在电脑上下载哔哩哔哩中的视频
  10. 把北斗七星与北极星捡起来
  11. [单片机框架][bsp层][cx32l003][bsp_adc] ADC配置和使用
  12. jquery鼠标移入文字提示_Jquery hover鼠标经过时弹出div动态提示语
  13. 基于智慧路灯杆的老旧小区改造方案
  14. SqlServer 对数据库文件进行增删改查
  15. EROFS文件系统工具简介
  16. python通讯录编程_python实现简单通讯录
  17. 变频器输出侧增加输出滤波器
  18. 不知不觉,我们长大了
  19. 英威腾伺服驱动器故障代码_英威腾伺服电机常见问题及解决方法
  20. 51单片机入门指南-基于STC89C52(持续更新)

热门文章

  1. 浅谈 Mobilenet V1-V3
  2. Vim实用技巧高清完整版PDF中文
  3. 略谈狄利克雷卷积和数论函数基础
  4. 【优选源码】每天免费领取名片赞至少1000!引流必备!
  5. 将多个txt文件批量导入到同个excel的不同sheet中
  6. linux 标准背光设备,linux背光子系统(backlight)
  7. 第三十五章 SQL函数 CURRENT_DATE
  8. 【水环境病原菌数据库开发心得】
  9. 【高数】导数存在,导数就连续吗?
  10. 算法研究和学习-果蝇算法FOA