在项目中,采用的架构是Springmvc+spring+EJB+Jpa等架构,当然服务器是Jboss,本次Jboss我们采用的是JBossEap6.2,Jboss7的新特性与Jboss4、5的大的改变是:

模块申明式容器

JBOSS EAP不再有lib的概念,一切都是module。无论是系统调用的lib,用户编制的lib,或者应用程序引用到的第三方lib都以模块的方式构建起来,并在使用的地方申明具体使用了哪个模块。这就带来两个好处,

  1. 按官方的说法提供了一种完全的模块化的类加载系统,JBOSS会根据具体的需要来加载或者卸载类,仅仅维护当前需要使用的资源,同时只暴露实际使用的API,也增加了系统的安全性。和以往的JBOSS相比JBOSSEAP6的启动和重启相当迅速,能为我们的开发环境减少更多等待的时间。
  2. 由于指定应用依赖的模块,从而避免了以前容易出现的包冲突的问题。

在看配置过过数据源《Oracle数据源的配置—认识模块的使用》一文后会对模块有一个简单的认识。接着还有《EJB实现—贯穿始终的模块》一文深入介绍模块在JBoss EAP 6.2中的全貌。

JBOSS对JEE6的全面支持

(带一句,正是由于强大的JEE6促使官方与民间技术之争上的高度融合,大家谁也别再争spring or EJB,看Spring和JSR不难发现,它们已经在互相融合)

JEE6给JBOSS EAP增加的几个明显的好处包括

1. 在以上描述的模块化类加载系统避免了包冲突的基础上,JEE6对EJB 项目的严格配置也为包冲突问题提供了很好的解决方案。MANIFAST中必须指明所依赖的模块。《EJB实现—贯穿始终的模块》。

2. JNDI的全面升级,使得Bean的重名问题和客户端stub的定位都得到很好的解决:EJB JNDI名字不再可以随便自定义,EJBJNDI的全名规范:

java:global[/<app-name>]/<module-name>/<bean-name>[!<fully-quali?fied-interface-name>]

其中包含了WAR包名称app-name,JAR包名称module-name,自定义Bean名称bean-name,接口的全地址名称,还有stateful的话需要声明stateful。如: CommonDAO/UTM/Common_DAO!com.hp.ngoss.utm.commondao.CommonDAOBusiness

对EJB3.1 Jboss的客户端有两个专题的详细讲解《让人又爱又恨的EJB3.1 JNDI》和《去掉jboss-ejb-client.properties》。

3. 对Singleton Session bean的支持,每个虚拟机只提供一个实例,单例模式在应用级别的实现。

4. 提供异步方法(Asynchronous  methods),EJB支持Future方式获得交互结果,提高了线程的使用率。见本系列文章:《异步Bean》

5. JPA(hibernate4)的全面支持,简化持久化层的开发工作。见本系列文章《JPA/hibernate

6. 没有接口的Session Bean。不推荐,理由:无论是CORBA还是Web Service都没有说不要Stub的概念。类似的,EJB要能够被调用,需要知道接口,不提供接口的方式必然需要在调用的时候创建接口以及对应的输入输出参数信息,这样一来增加传输的流量开销;当然不是说完全没价值,对于服务提供对象是第三方的客户时,有时会不提供编程接口,这种情况便可以采用此方式,但通常来说服务供认者与客户是友好关系,直接提供接口给客户不违背良心。基于之前说的问题,本人不推荐使用这种方式。

7. 在动态Web项目中实现Session Bean。不太推荐使用,这个使得JEE的4层架构中的Web层与Business层的界线混淆,出于解耦的目的,不推荐使用。可能的使用场景,JBOSS自己提供的EJB只给自己的web层使用,没有分布式的场景。

8. Managed domains: 管理域组织各物理机上的虚拟服务为服务组,使得所有服务器在一个地方统一配置、统一部署。配置为同一服务组内的机器可以自动扩展,也可以在一台主机上根据不同的端口绑定来设置多个实例。Managed Domain要区别与Cluster,Cluster的主要功能是负载均衡、容灾,而Managed domain的目的主要在于统一管理。本系列八《Managed Domains》详细的介绍了一个管理域的实现,并讲解了管理域的统一配置、统一部署的特性。本系列九《Cluster负载均衡集群》介绍了JBOSS
EAP 6(JbossAS7)的集群配置方式。

最后,也是对开源产品抱怨最多的问题(乱+繁)的解决方案:EAP版有技术支持,对应用服务器的配置和相关的技术问题实在是搞不定的时候,可以找Redhat技术人员来帮忙(外网的支持)。

除以上的介绍之外还有很多别的新功能如:

对容器的多种管理方式:web页面,cli客户端,和配置文件方式对容器进行管理。比如说网上就会有两种JBOSSEAP数据源的配置方式,一种是cli端+web页面的配置,一种直接在配置文件里面配,其实效果是一样的,只不过配置文件配置的方式不会留下任何痕迹,不方便追溯。不过个人感觉在实际应用中,特别是自动部署中,还是以配置文件的方式来管理容器比较实用。

看到JBOSS EAP带来的各种好处的同时,也希望JBOSS EAP能即像WebLogic等厂商经营的应用服务器一样,提供更多专业的为开发和实施带来便利的能力(如自动升级应用)。同时也能保持开源社区的包容性和技术的多样性,更开放的尝试各种新技术,新架构,新思想。

总结

新的事物不可怕,怕的是内心的那种恐惧,新的事物、新的架构、新的思想--站在巨人肩膀之上,成长迅速!

JBOSS EAP 6 系列一 新特性的更多相关文章

  1. JBOSS EAP 6 系列六 公共模块的jar配置到jboss的modules详细配置

    公司项目中遇到并要解决的问题 1:原则上除了自己写的代码之外,公共的jar不应该都在打包的时候打包到ear里面,这样的话包太大,也不符合的分层的逻辑,在jboss容器内部,每个ear的包重复jar都会 ...

  2. JBOSS EAP 6 系列四 EJB实现——调用(贯穿始终的模块)

    本文主要介绍在JBOSS EAP 6.2(或者JBOSS AS7)中模块是如何贯穿EJB实现的始终.延续上一博文<认识模块的使用>的话题继续聊JBOSS做为模块申明式容器的这一特性在EJB ...

  3. JBOSS EAP 6 系列三 Oracle、Mysql数据源的配置(驱动)—认识模块的使用

    本文介绍JBOSS EAP 6.2中Oracle数据源的配置方式.结合之前JBOSS EAP 6.2新功能,本文初识JBOSS模块申明式容器这一特性. 模块申明式容器:JBOSS EAP不再有lib的 ...

  4. JBOSS EAP 6 系列五 Managed domains 管理域最主要的功能是“统一部署,统一配置”

    摘要 本文首先介绍Managed Domain的概念,管理域最主要的功能是"统一部署,统一配置".接下来通过一个实例在"统一配置"部分实现一个双机配置起来的域, ...

  5. SCCM 2012系列之新特性

    SCCM 2012站点类型: 站点 作用 相对于SCCM 2007 的变化 中心管理站点The central administration site(CAS) 中心管理站点协调内部站点的数据复制.使 ...

  6. WebLogic Server 12c相对JBoss EAP 6的优势

    原文来自:https://blogs.oracle.com/middlewareplace/entry/why_should_you_choose_oracle 1.多数据中心部署和集群 WebLog ...

  7. 【开源】OSharp3.3框架解说系列:重新开源及3.3版本新特性

    OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...

  8. Atitit 发帖机系列(8)  词法分析器v5 版本新特性说明)

    Atitit 发帖机系列(8)  词法分析器v5 版本新特性说明) v5  增加对sql单引号的内部支持.可以作为string 结构调整,使用递归法重构循环发..放弃循环发. V4 java dsl词 ...

  9. 重新想象 Windows 8.1 Store Apps (92) - 其他新特性: CoreDispatcher, 日历, 自定义锁屏系列图片

    [源码下载] 重新想象 Windows 8.1 Store Apps (92) - 其他新特性: CoreDispatcher, 日历, 自定义锁屏系列图片 作者:webabcd 介绍重新想象 Win ...

随机推荐

  1. 用js来实现那些数据结构10(集合02-集合的操作)

    前一篇文章我们一起实现了自定义的set集合类.那么这一篇我们来给set类增加一些操作方法.那么在开始之前,还是有必要解释一下集合的操作有哪些.便于我们更快速的理解代码. 1.并集:对于给定的两个集合, ...

  2. [SCOI 2005]王室联邦

    Description “余”人国的国王想重新编制他的国家.他想把他的国家划分成若干个省,每个省都由他们王室联邦的一个成员来管理.他的国家有n个城市,编号为1..n.一些城市之间有道路相连,任意两个不 ...

  3. Codeforces Round#433 简要题解

    来自FallDream的博客,未经允许,请勿转载,谢谢. 我的号自从几个月前姿势水平过低疯狂掉分之后就没动过了  突然想上点分  就打了一场Div1  没想到打到了rank5  一发上橙了,可还行. ...

  4. hzoj 2301(莫比乌斯反演)

    题意 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公 数. 思路: 与先前的那个相比,这次a,c并不一定 ...

  5. java版的类似飞秋的局域网在线聊天项目

    原文链接:http://www.cnblogs.com/wangleiblog/articles/5323305.html 转载请注明 最近在弄一个java版的局域网在线聊天项目,功能跟飞秋差不多.p ...

  6. make cmake gcc 间的关系

    看了一些关于make  cmake gcc间关系的帖子,其中这一篇简单明了. 作者:辉常哥链接:https://www.zhihu.com/question/36609459/answer/89743 ...

  7. 以太坊区块链Java(EthereumJ)学习笔记:概述

    本系列文章介绍以太坊区块链基于Java语言的解决方案.通过介绍EthereumJ定义的主要模块和Class,希望为大家学习和使用EthereumJ提供一些帮助. 整体架构 以太坊的Java解决方案主要 ...

  8. AMD,CMD,UMD,CommonJS

    http://www.jianshu.com/p/bd4585b737d7 http://www.jianshu.com/p/09ffac7a3b2c

  9. JQuery when() done() then()

    jQuery.when(deferreds) 参数deferreds,一个或多个延时对象或JS对象,我们初略的认为它就是一个或多个异步请求. 例如:$.when($.ajax("page1. ...

  10. kindeditor配合requirejs使用时,ready失效

    KindEditor官方的文档在使用KindEditor时是这样的: KindEditor.ready(function(K)) { K.create('#editor_id'); } 使用了自己提供 ...