快速业务通道

提升EJB性能的12招 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22

提升EJB性能的12招

时间:2010-12-18

Enterprise JavaBeans(EJB)是一种被广泛采用的基于J2EE平台上的服务端组件体系架构,它可以用来快速开发灵活的、可重用的、可移植到各个中间件平台上的以任务为关键的企业级应用。同时,由于采用开放的协作制定规范,EJB架构能保护IT投资,减少对供应商的依赖性,避免局限在某一个供应商的技术实现上。其中,性能是EJB应用程序成败的关键。

为了开发高性能的企业级应用,我们必须意识到良好的设计和编程规范是性能提升的基础。理想状态是在开发前我们必须先行掌握优秀的编程规范。而到了开发后期,再将重点转移到整个应用程序性能的调整:包括Web服务器, 应用服务器业以及数据库。策略是找出脆弱的一环,然后进行改进。为达到最佳性能,本文将讨论一些通用的技巧,帮助我们设计和实现一个高性能的基于EJB的企业级应用。

EJB的开发

我们前八个EJB性能方面的技巧是关于在应用系统设计和开发阶段的。因为在服务器环境下,多数需要优化的代码,更多地是在布署阶段之前。以便在问题不可收拾前把问题找出并解决。

1. 设计粗粒度(coarse-grained) 的EJB 远程(remote) 接口

由于每个通过远程或本地(home)接口调用EJB的方法都属于远程调用,对于大多数细粒度(fine-grained)的对象交互来说调用中间件的开销大得简直让人无法承受。为了避免这类问题, 每个EJB应代表一个独立的业务对象,有独立的特性和生命周期。具有依赖性的对象决不能用EJB表示。相反,它应该作为一个EJB内部的Java类来实现。例如,一张购物单可用一个EJB来实现,而每张购物单上的子项就不应该用EJB,可以采用helper类的形式实现。

2. 设计粗粒度的EJB远程接口方法

正如上面所提到的,每个客户端对EJB的调用都是远程调用,另外还要进行一些检查操作,比如存取控制,事务处理以及激活/休眠等。 因此,EJB调用比远程调用要慢上好几倍,与调用本地方法的时间相差就更大了。减少方法的调用次数可以提高性能。设计粗线优化的方法中的一个技巧,就是在单个方法调用过程中尽量增加数据来回传输的数量,把多个方法合并以减少方法的个数。比如,代码段一显示的是一个设计欠佳的远程接口,因为客户端必须多次调用来取得Person的数据。相比之下代码段二改进了性能表现,因为它在一次方法调用中使用了粗粒度的方法,方法的个数变少了,从而减少了调用次数(尽管这些方法传输的数据更多)。

3. 减少JNDI 查找次数

由于各种应用服务器的命名和目录服务在具体实现方法上的差异,JNDI 的查找过程可能会比较费时。 (注:JNDI对EJB资源,比如数据源、bean引用,乃至环境项(environment entry)的查找可能花费巨大,且避免重复查找并非易事。)某些应用服务器在不同的机器上采用单独的进程来实现目录信息。在这种情况下缓存home handle是一个提升性能的好办法。(见代码段3). facade是一个对象,它为多个对象提供一个的统一接口。一个服务端的facade能简化处理,使得客户端不需了解每个服务器端的EJB(见图一)。在这种方式下所有客户端对服务器的调用都经由对象ServerFacade。如代码段3所示,ServerFacade是一个会话 EJB,缓存了所有需要的EJB的home handle.而客户也可以在客户端用singleton对象来缓存ServerFacade的home handle。

提升EJB性能的12招 - 编程入门网

图 1.客户端通过ServerFacade访问服务器。ServerFacade是一个会话 EJB,缓存了所有需要的EJB的home handle.

4. 利用会话 bean的包从一个实体 bean中返回多行数据

通常,在我们的应用程序中一个bean表示数据库的一个逻辑行。实体 bean的本地接口中定义了一个或多个finder方法。每个方法用于查找一个实体对象或多个实体对象的集合。 在客户端通过调用实体bean的finder方法来取得实体对象的集合。 然后

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号