提高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
分享到:
相关推荐
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 ...
EJB2.0引入了本地接口的概念,允许开发者使用本地接口访问EJB组件,提高性能。在这一部分,我们将学习如何使用本地接口实现CMP实体Bean。 **开发EJB2.0的CMP (EJBQL)** EJBQL (Enterprise JavaBeans Query ...
EJB(Enterprise JavaBeans)技术自1998年首次推出以来,经历了多个版本的演进,其中EJB 2.0是EJB 1.1的重要升级版,带来了诸多改进和新特性,旨在简化企业级应用开发,提高性能和灵活性。 - **规范内容扩展**:EJB...
**ejb3 第5讲 -- 通过ANT提高EJB应用的开发效率** EJB(Enterprise JavaBeans)是Java EE平台中的核心组件,用于构建企业级应用程序。EJB 3.0是一个重要的里程碑,它极大地简化了EJB的开发,提高了开发效率。在本...
- WebLogic Server提供多种性能优化选项,如缓存管理、JVM调优、连接池配置等,以提高EJB应用的性能。 11. **EJB 3.1和以上版本的新特性** - 自动化的注解驱动编程降低了EJB的复杂性,如@Stateless、@Stateful、@...
全书共分16章,内容依次包含了Java EE概述、EJB基础、搭建EJB环境、会话bean、持久化实体、持久化实体管理器、对象关系映射、JPQL查询、消息驱动bean、事务、提高EJB 3.0性能、从Web层访问EJB 3和EJB安全、EJB和Web...
7. **性能优化**:讨论如何通过缓存、连接池等技术提高EJB客户端的性能。 在“把jboss集成进eclipse”这一部分,你将学习: 1. **Eclipse与JBoss集成**:如何设置Eclipse工作空间,安装并配置JBoss插件,以便在IDE...
综上所述,EJB3相对于EJB2的主要改进在于简化了编程模型,通过注解减少了冗余代码,并引入了依赖注入以提高代码的可读性和可维护性。然而,理解EJB3中的JNDI机制仍然是开发过程中不可或缺的一部分,尤其是当需要处理...
* 使用 caching 来提高 EJB 的性能。 九、EJB 的应用场景 EJB 的应用场景包括: * 企业级应用程序。 * 电子商务平台。 * 网络银行系统。 十、EJB 的发展趋势 EJB 的发展趋势包括: * EJB 3.0 的出现。 * EJB ...
通过上述对比,我们可以看出EJB 3.0相对于EJB 2.0做了大量的改进,特别是在简化开发流程和提高灵活性方面。这些变化使得EJB更加易于使用和集成,同时也保持了其作为企业级应用开发框架的核心价值。对于开发者而言,...
- **负载均衡**:通过容器(如JBoss)实现,能有效地分配服务请求,提高系统性能。 开发EJB3.0的环境准备: - **JBoss应用服务器**:EJB3.0需要JBoss4.0或更高版本作为运行环境。 - **Java EE版本**:至少需要Java...
通过上述过程,我们可以看到EJB为开发者提供了一种高效、标准化的方式来构建企业级应用,降低了复杂度,提高了可维护性和可扩展性。然而,学习和掌握EJB技术需要时间,尤其是对于复杂的业务逻辑和系统集成场景,但其...
Java性能优化技巧集锦是一篇详细的技术文章,旨在帮助Java开发者提高应用程序的性能。下面是该文章中提到的重要知识点: 一、通用篇 1.1 不用 new 关键词创建类的实例 使用clone()方法创建新的对象实例,而不是...
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.AccessLocalException.class javax.ejb.CreateException.class javax.ejb.DuplicateKeyException.class javax.ejb.EJBContext.class javax.ejb.EJBException.class javax.ejb.EJBHome.class javax.ejb....
10. **异步处理(Asynchronous Processing)**:EJB3.0允许消息驱动Bean以异步方式处理消息,提高系统响应性和可扩展性。 压缩包中的文件分别涵盖了EJB3.0的核心部分、持久化机制和简化版规范: - `ejb-3_0-fr-...
EJB(Enterprise JavaBeans)3.0是Java企业级应用开发的一个重要版本,它极大地简化了EJB的使用,降低了开发复杂性,并引入了许多新特性。在这个“ejb3.0写的登陆应用”中,我们可以深入探讨EJB 3.0在实现登录应用中...
针对EJB2.x存在的问题,EJB3.0的开发目标主要是提高开发效率和降低复杂度: 1. **简化开发流程**:EJB3.0采用注解驱动的方式减少冗余代码,使得开发者可以更加专注于业务逻辑的实现。 2. **提高灵活性**:EJB3.0...
EJB集群是EJB技术的一个重要特性,它允许EJB容器(如JBOSS)在多台服务器上分布和复制EJB实例,以实现高可用性和负载均衡。 在给定的示例中,我们看到一个简单的无状态会话Bean(Stateless Session Bean)`...