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到GlassFish中。

Part3:理解 GlassFish OSGi/EJB容器并开发和部署一个EJB 应用程序Bundle到GlassFish中。

Part4:理解 GlassFish OSGi/CDI(上下文依赖注入)规范以及GlassFish OSGi/CDI的实现,同时,展示如何使用GlassFish OSGi/CDI来简化企业级OSGi的开发。

Part5,Part6:集成EAR和OSGi,其中,Part5会通过集成Apache Aries Application特性来拥抱EAR和OSGi;Part6会通过一个真实的案例来展示如何使用EJB Bundle来桥接EAR 和OSGi以达到相同的目的。

Part7:深入解读GlassFish、HK2和OSGi三者的关系, 同时,对于社区经常 提到的问题阐述一个自己的观点。(“HK2在未来将会Dead吗?”)

Part8:深入理解GlassFish内核(模块 的配置、加载以及启动),同时,以一个案例展示如何扩展GlassFish来加入更多自定义模块。

Part9: 贡献GlassFish OSGi以及OSGi-JavaEE的流程。

本专题将假定读者拥有GlassFish和OSGi的基本知识, 限于篇幅原因,我将不会专门介绍GlassFish和OSGi的基本知识。如果读者刚刚接触GlassFish,建议大家参考 以下链接:

如果读者并不了解OSGi,推荐大家阅读以下的书籍:

Neil Bartlett’s “OSGi in Practice”

Richard S. Hall等 “OSGi In Action”

如果用一句话来定义”什么是 GlassFish OSGi-JavaEE”的话,那么我们可以这样说:

GlassFish OSGi-JavaEE就是企业级OSGi的GlassFish实现。

从2005年GlassFish 1.0到现在4.0的发布,GlassFish已经走过了9个年头,在这9年中,GlassFish经历了 JavaEE5到JavaEE7的进化,经历了Sun被Oracle的收购,经历了架构上的重大变更……在我看来,最为重要的 改变是GlassFish 3.0的内核和设计理念的重大变更,甚至说是一次革命! 3.0之前,GlassFish是一个不可分 割或者说是一个整体化(monolithic)的庞然大物,内核与组件以及各个组件之间紧耦合,缺乏足够灵活的扩展 性,启动性能不高。3.0时代,情况发生了根本性的转变,内核依托HK2和OSGi,各个模块完全采用OSGi设计理 念,GlassFish变得更加轻量级和模块化,内核与组件以及各个组件之间实现了松耦合,有着更加良好的可扩 展性,启动性能有了质的提高,更为重要的是大大提高了可维护性。同时,更多有特点的模块出现了, GlassFish OSGi-JavaEE就是其中之一。而这一切都要归功于OSGi!

另一方面, 放眼当前世界上其他主 流的开源JavaEE应用服务器,如JBOSS 7(现在已经更名为Wildfly), Apache Geronimo 3等均采用模块化的设 计理念(尽管JBOSS 7没有直接采用OSGi作为内核),力图使应用服务器瘦身,更加具有可维护性和可扩展性 。

我们已经看到模块化的设计理念在JavaEE应用服务器领域大获成功,OSGi作为模块化设计理念中最 具代表性的产物,功不可没!

本专题并不专门讲述OSGi的基本知识以及如何采用OSGi来设计JavaEE应 用服务器,相反,我们探讨如何使用OSGi来开发企业级Java应用。但是,当提到OSGi与企业级Java时,我们势 必将会抛出一个问题:为什么企业级Java需要使用OSGi?

为了回答这个问题,我们需要进一步解答以下 的两个重要的问题:

企业级Java开发有哪些不足?

借助OSGi能够解决这些不足吗?

企业级Java开发有哪些不足

企业级Java是由构建在核心Java上的一系列库、API以及框架松散构成 的,并且这些库、API以及框架为开发人员提供了一系列的企业服务,例如,分布式组件开发、事务、持久化 访问数据库等。企业级Java已经取得了巨大的成功(无论是 JavaEE 本身还是 Spring 框架),但是,随着企 业级Java应用程序的规模和复杂度的不断增加,这些应用程序已经开始变得更加得笨重和庞大,标准Java的一 些固有的问题也越发变得严重,有时甚至是致命的。

classpath地狱

众所周之,标准Java的 classpath是扁平(flat)的结构,也就是说,是以线性顺序在指定的classpath中搜索类。例如,图1中,

图1: 标准Java中扁平(flat)的classpath结构

时间: 2024-11-05 04:48:53

GlassFish OSGi-JavaEE (一) GlassFish与企业级OSGi开发的相关文章

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

IBM 和 OSGi OSGi 是 Java 语言的动态模块系统.IBM 是 OSGi 联盟的初始成员之一,该联盟旨在促进 OSGi 服务平台的广泛采用,确保通过网络交付和管理的应用程序和服务的互操作性.多年来,IBM 一直在 IBM Lotus 和 WebSphere 产品中使用 OSGi 技术.事实上,从 IBM WebSphere Application Server 6.1 版本就开始使用 OSGi 了.用户看不到它,因为使用 OSGi 是为了实现底层应用程序服务器架构的模块化,从而使其

spring boot 搭建的一个企业级快速开发脚手架

slife spring boot 搭建的一个企业级快速开发脚手架. 这本来是我自己平时测试用的项目,没打算开源. 但今天放到 开源中国 和 GitHub 没想到会被 码云设置为推荐项目.并且还上了今日热门项目 第一名 联系方式 qq群 421351927 項目地址https://gitee.com/jamen/slife 技术栈 Spring Boot MySQL Freemark SiteMesh Shiro Boostrapt mybatis.mybatisPlus redis Activ

Spark企业级应用开发和调优

1.Spark企业级应用开发和调优 Spark项目编程优化历程记录,主要介绍了Spark企业级别的开发过程中面临的问题和调优方法.包含合理分配分片,避免计算中间结果(大数据量)的collect,合理使用map,优化广播变量等操作,降低网络和磁盘IO,提高计算效率. 2.核心技术优化方法对比 首先如下图(2.1),Spark应用开发在集群(伪分布式)中的记录,每一种不同颜色的折线代表一个分布式机器 最终,图4中四条折线并行达到峰值(即CPU100%).降低了处理时间,增大了处理效率. 2.1.重要

企业级软件开发需要什么样的框架?

1)领域建模 分析领域特定的问题.比如赶集网这一分类信息网站,她的定位是解决都市人寻求房屋出租.二手房.二手车.二手物品交易.求职招聘等生活信息的需求的.在领域建模阶段要解决的就是这个软件的定位问题,做什么不做什么.这一阶段由高层领导,市场销售及系统分析师等完成. 2) 平台技术选择 技术选型,比如用什么平台/架构(.net,j2ee,php,python等等)开发,采用什么服务器托管等.这一阶段由系统高层领导,系统分析师及系统架构师等完成. 3) 解决方案 根据选定的平台技术等给出一个可行的解

《OSGi官方文档》使用OSGi的好处

开发者: 对于今天的大型分布式系统OSGi提供了一个和小型.嵌入式应用一样的模块化的架构来减少系统复杂性.从内部和现成的模块来构建系统可以显著的减少开发和维护的成本.OSGi编程模型就是实现组件为基础的系统. 业务: OSGi的模块化和动态模块降低在网络工作环境下的多设备集成的操作成本,减少应用的开发.维护和远程服务管理的成本.OSGi 如此成功的关键原因在于它提供了一个非常成熟的组件系统,他可以工作在数量惊人的环境中.OSGi 的组件系统实际已经被用来构建像IDEs(Eclipse).应用服务

【OSGI】非Eclipse下构建OSGI运行环境

搭建非Eclipse下构建OSGI运行环境 由于工作需要,学习了OSGI.之前在Eclipse上搭建过OSGI模块化开发平台,但是这种启动plug-in项目的方法最终交付用户的时候不能让用户通过Eclipse来启动项目,所以我们要搭建一个非Eclipse下构建OSGI运行环境.   首先我写这篇文章的时间是2016年3月3日,我使用的编译器是Spring Tool Suite(和Eclipse几乎一模一样,只是添加了一些支持Spring的插件),我的JDK版本是1.7,OSGI的jar版本是or

ASP.NET 3.5企业级项目开发

第一章:企业级项目框架概述 前言:之前也看过大家在谈架构,谈分层,谈模式.对一些问题,大家也各抒己见,确实不确.但是 不管怎样,我们最终还是要在我们的项目中真正的去实现谈论的这些方法,方法谈了就要用,要实践才有 价值.而且代码是最没有二义性的,所以,本系列将一步步的带领大家开发一个正真的企业级项目. 其中融合了分层架构,设计模式以及很多OO的设计思想.而且大家也可以看到,我们不是"为了 模式而模式",而是一种自然过渡的思想.本系列文章不是为了别的,只是希望可以给大家带来一点 点的帮助.

ASP.NET 3.5企业级项目开发 第二章(续) 数据访问层(DAL)的开发解决方案提出

前言:首先给大家说声"对不起",因为自从打算写这系列的文章以来,得到大家很多的支持,谢谢大 家!最近因为公司的事和朋友找工作的事,没有怎么接着写了,也调了大家的胃口,还希望园子里的朋友 原谅! 本篇主要是讲述数据层的开发,之前的一篇文章已经给出了很多的选中的方案,如 SqlHelper,DataTable/DataSet,以及自定义实体.但是我们说过了,那些方案都有不尽人意的地方,所以 我们就提出用Linq,找个方案就比之前好一些,但是也不是那么完美了. 本篇的话题如下: Linq中自

ASP.NET 3.5企业级项目开发 第二章 数据访问层(DAL)的开发

本篇的话题主要如下: 问题提出 设计方案 问题提出 数据访问层(DAL)的目标创建一些以便业务层来调用的类和方法.我们之前总是用GridView来绑定 DataSet和DataReader,但是在稍微大点的项目开发中DAL不能直接和用户 界面打交道. 一般来说,DAL是用来和数据库和BLL打交道的,也就是处理BLL和数据库的中间.数据以什么形式在 DAL和BLL之前传递有很多的争论.不同的人有不同的意见,数据传递的形式有:DataSet,强类型的 DataSet,DataReader,自定义实体