`
啸笑天
  • 浏览: 3441802 次
  • 性别: Icon_minigender_1
  • 来自: China
社区版块
存档分类
最新评论

提高EJB性能的十大技巧

阅读更多

提高EJB性能的十大技巧

 

 

        EJB调用是耗时、费力的。怎么提高EJB的性能?我们为解决这一问题,开始边写边讨论。等到完成了,我才发现,我们所应用的技巧总结一下,竟有十条。把提高EJB性能的这些技巧总结一下,为以后的项目做参考。 

       1.用一个Session Bean封装多个Entity Bean,将原来的多个Entity Bean的Remote调用和Local调用封装在一个Session Bean中。所以建立一个ServerFacade,它为多个对象提供统一获取EJB Home和获取对象的接口。ServerFacade为程序要用到的所有EJB的home handle提供缓存,提高访问JNDI Name的时间,达到提高访问效率的目的。以后查找JNDI Name的方法都应写在接口里,调用时直接从接口调用。 

        2.在EJB的Remote接口中使用粗粒度的方法,不推荐使用细粒度方法。 

        3.如果EJB的Remote接口获取成功,应不再使用Remote接口,而是将Remote接口构造成一个一般的Java对象,通过调用一般的JAVA对象的方法来达到减少对网络的访问。 

        4.如果你部署EJB客户端和EJB在相同的JVM上,建设使用EJB2.0规范的Local接口代替Remote接口。 

        5.用"transient"关键字声明不必要的数据变量,替代以前的"public"、"private"等,避免不必要的数据变量占用网络资源。示例: 

1
2
3
4
5
6
7
public class DemoCMP implements EntityBean { 
transient EntityContext entCtx; 
transient InitialContext initCtx; 
public String id; 
public String description; 
… 
} 

        6.在ejb-jar.XML部署文件中,对Session Bean中非事务的方法,将trans-attribute属性赋为"NotSupported"或"Never" 
1
2
3
4
5
6
7
8
9
10
11
12
<ejb-jar> 
… 
<assembly-descriptor> 
<container-transaction> 
<method> 
<ejb-name>abookesessionBean</ejb-name> 
<method-name>*</method-name> 
</method> 
<trans-attribute>NotSupported</trans-attribute> 
</container-transaction> 
</assembly-descriptor> 
</ejb-jar> 

        7. 设置事务的超时时间,在JBoss中,要修改${jboss.home}/server/${jboss.configuration}/conf/jboss-service.xml ,如下所示: 

1
2
3
4
5
6
7
8
<server> 
… 
<mbean code="org.jboss.tm.TransactionManagerService" 
name="jboss:service=TransactionManager"> 
<attribute name="TransactionTimeout">300</attribute> 
</mbean> 
… 
</server> 

         8.当事务锁定数据库的行记录时,事务应跨越可能的最小的时间。 

        9.调整EJB 服务器的各种参数,如线程数、EJB池大小、连接池参数等。以在JBoss修改连接池参数为示例,进行说明。如果JBoss和MySQL相连,配置${jboss.home}/server/${jboss.configuration}/deploy/mysql-service.xml,来修改连接池参数,包括MinSize、MaxSize、BlockingTimeoutMillis、IdleTimeoutMinutes、Criteria等,各参数的含义如下所示: 

            i.MinSize :连接池保持的最小连接数。 

            ii. MaxSize :连接池保持的最大连接数。 

            iii. BlockingTimeoutMillis :抛出异常前最大的等待连接时间。 

            iv. IdleTimeoutMinutes :关闭连接前连接空闲的最大时间。 

            v. Criteria :有ByContainerAndApplication、ByContainer、ByApplication和ByNothing等值。 

           下面是一个例子: 

1
2
3
4
5
6
7
8
9
10
11
<depends optional-attribute-name="ManagedConnectionPool"> 
<!--embedded mbean--> 
<mbean code="org.jboss.resource.connectionmanager.JBossManagedConnectionPool" 
name="jboss.jca:service=LocalTxPool,name=MySqlDS"> 
<attribute name="MinSize">0</attribute> 
<attribute name="MaxSize">50</attribute> 
<attribute name="BlockingTimeoutMillis">5000</attribute> 
<attribute name="IdleTimeoutMinutes">15</attribute> 
<attribute name="Criteria">ByContainer</attribute> 
</mbean> 
</depends> 

        10.对于数据库事务,应选择较低成本的事务等级,避免造成坏数据。递增成本的事务等级包括: 

          TRANSACTION_READ_UNCOMMITED, 
          TRANSACTION_READ_COMMITED, 
          TRANSACTION_REPEATABLE_READ, 
          TRANSACTION_SERIALIZABLE 

分享到:
评论

相关推荐

    ejb性能优化设计方案

    This paper analyzes elements of remote invocation method, points out the initialization, JNDI search and remote invocation are the keyfactors affecting the EJB performance. Thus, an idea optimizing ...

    实战EJB 实战EJB 实战EJB

    实战EJB 实战EJB 实战EJB 电子书 pdf

    EJB方面 ejb pdf

    EJB方面EJB方面EJB方面EJB方面EJB方面

    EJB 3.0从入门到精通

    全书共分16章,内容依次包含了Java EE概述、EJB基础、搭建EJB环境、会话bean、持久化实体、持久化实体管理器、对象关系映射、JPQL查询、消息驱动bean、事务、提高EJB 3.0性能、从Web层访问EJB 3和EJB安全、EJB和Web...

    EJB集群EJB集群资料

    EJB集群资料EJB集群资料EJB集群资料EJB集群资料

    EJB白皮书EJB白皮书

    ejb-3_0-fr-spec-ejbcore.pdf ejb-3_0-fr-spec-persistence.pdf ejb-3_0-fr-spec-simplified.pdf

    java反射与EJBjava反射与EJBjava反射与EJBjava反射与EJBjava反射与EJB

    java反射与EJBjava反射与EJBjava反射与EJBjava反射与EJBjava反射与EJBjava反射与EJB

    EJB设计模式概述——讲解EJB设计模式的重要性及常用的模式

    这直接导致如下问题:网络负载大(远程客户端时)、并发性能低、客户端与服务器端关联度大、可重用性和可维护性差、性能 因此有必要在客户端与实体EJB层间加入Session EJB层,在Sessino EJB中实现商业逻辑并...

    ejb3中文版

    ejb3中文版

    ejb+hibernate资料 ejb+hibernate资料

    ejb+hibernate资料 ejb+hibernate资料 ejb+hibernate资料 ejb+hibernate资料

    手动部署EJB 亲自体验EJB开发流程

    手动部署EJB 亲自体验EJB开发流程 手动部署EJB 亲自体验EJB开发流程

    EJB3.0规范-EJB3.0 SPECIFICATION

    EJB3.0规范 EJB3.0 SPECIFICATION 官方规范英文版

    EJB基础(学习EJB者必看)

    EJB基础学习EJB者必看里面详细记录了EJB技术等

    EJB设计模式(PDF)

    本书包括了多个高级EJB设计模式,还提供了使用EJB设计模式的策略、J2EE开发的最佳实例,以及非常实用的EJB设计技巧和技术。本书还包括以下内容:架构模式、事务和持久性模式、客户端交互模式、主键一成策略。用Ant...

    EJB3的三本好书第3本 Mastering EJB3 4ed

    EJB3的三本好书之三,也很不错的一本ejb3的书籍,是英文版,附带源代码,这本书的好处是与Mastering EJB 3ed有一定的继承性,可以对比来看. 3本书的地址 1. Beginning EJB3 Application Development From Novice to ...

    javax.ejb.jar下载

    Files contained in javax.ejb.jar: META-INF/MANIFEST.MF javax.ejb.AccessLocalException.class javax.ejb.AccessTimeout.class javax.ejb.ActivationConfigProperty.class javax.ejb.AfterBegin.class javax....

    javax.ejb.rar

    META-INF / maven / org.glassfish.main.ejb / javax.ejb / pom.properties META-INF / maven / org.glassfish.main.ejb / javax.ejb / pom.xml javax.ejb.AccessLocalException.class javax.ejb.AccessTimeout....

    J2EE,EJB,J2EE,EJB,

    J2EE,EJB,J2EE,EJB,J2EE,EJB,J2EE,EJB,J2EE,EJB,J2EE,EJB,J2EE,EJB,J2EE,EJB,

    ejb2.0与ejb3.0的区别

    ejb2.0 ejb3.0的区别,比较详细讲解两者的区别

    ejb3.0实例教程

    期待已久的 EJB3.0 最终规范已经发布了。虽然 EJB3.0 最终规范出来了一段时间,但对 EJB3.0 的应用还停留在介 绍之中,应用实例更是少之又少,所以作者拟写本书,以简单的实例展现 EJB3.0 的开发过程,希望对大家有所...

Global site tag (gtag.js) - Google Analytics