提高EJB性能都有哪些技巧


Posted in 面试题 onMarch 25, 2012
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






abookesessionBean
*

NotSupported




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

1
2
3
4
5
6
7
8



name=”jboss:service=TransactionManager”>
300




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



name=”jboss.jca:service=LocalTxPool,name=MySqlDS”>
0
50
5000
15
ByContainer



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

TRANSACTION_READ_UNCOMMITED,
TRANSACTION_READ_COMMITED,
TRANSACTION_REPEATABLE_READ,
TRANSACTION_SERIALIZABLE

Tags in this post...

面试题 相关文章推荐
PHP数据运算类型都有哪些
Nov 05 面试题
super关键字的用法
Apr 10 面试题
在C语言中实现抽象数据类型什么方法最好
Jun 26 面试题
雅虎笔试题(字符串操作)
Mar 24 面试题
写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度
Nov 18 面试题
几个数据库方面的面试题
Jul 01 面试题
介绍一下代理模式(Proxy)
Oct 17 面试题
介绍一下.NET构架下remoting和webservice
May 08 面试题
linux比较文件内容的命令是什么
Mar 04 面试题
Java里面Pass by value和Pass by Reference是什么意思
May 02 面试题
Java如何读取CLOB字段
Oct 10 面试题
Java Servlet的主要功能和作用是什么
Feb 14 面试题
EJB实例的生命周期
Oct 28 #面试题
EJB timer的种类
Oct 28 #面试题
EJB的激活机制
Oct 25 #面试题
如果Session Bean得Remove方法一直都不被调用会怎么样
Jul 14 #面试题
EJB的几种类型
Aug 15 #面试题
介绍一下EJB的体系结构
Aug 01 #面试题
客服端调用EJB对象的几个基本步骤
Jan 15 #面试题
You might like
PHP最常用的ini函数分析 针对PHP.ini配置文件
2010/04/22 PHP
php实现在线生成条形码示例分享(条形码生成器)
2013/12/30 PHP
php内核解析:PHP中的哈希表
2014/01/30 PHP
PHP面向对象多态性实现方法简单示例
2017/09/27 PHP
微信公众平台开发教程②微信端分享功能图文详解
2019/04/10 PHP
详解提高使用Java反射的效率方法
2019/04/29 PHP
javascript控制swfObject应用介绍
2012/11/29 Javascript
使用JS 清空File控件的路径值
2013/07/08 Javascript
jquery制作LED 时钟特效
2015/02/01 Javascript
nodejs修复ipa处理过的png图片
2016/02/17 NodeJs
微信小程序中使用javascript 回调函数
2017/05/11 Javascript
基于openlayers4实现点的扩散效果
2020/08/17 Javascript
JavaScript 五大常见函数
2018/03/23 Javascript
微信小程序项目实践之主页tab选项实现
2018/07/18 Javascript
Vue-cli3项目配置Vue.config.js实战记录
2018/07/29 Javascript
vue 使用自定义指令实现表单校验的方法
2018/08/28 Javascript
JavaScript中Array方法你该知道的正确打开方法
2018/09/11 Javascript
关于Vue项目跨平台运行问题的解决方法
2018/09/18 Javascript
详解element-ui日期时间选择器的日期格式化问题
2019/04/08 Javascript
详解Angular cli配置过程记录
2019/11/07 Javascript
[01:50]2014DOTA2西雅图邀请赛 专访欢乐周宝龙
2014/07/08 DOTA
Python实现的最近最少使用算法
2015/07/10 Python
Html5 Canvas 实现一个“刮刮乐”游戏
2019/09/05 HTML / CSS
canvas学习和滤镜实现代码
2018/08/22 HTML / CSS
德国旅游网站:weg.de
2018/06/03 全球购物
Seavenger官网:潜水服、浮潜、靴子和袜子
2020/03/05 全球购物
网络工程师专家职业发展路线
2014/02/14 职场文书
推广普通话演讲稿
2014/05/23 职场文书
缓刑期间思想汇报范文
2014/10/10 职场文书
2019下半年英语教师的教学工作计划(3篇)
2019/09/25 职场文书
python 机器学习的标准化、归一化、正则化、离散化和白化
2021/04/16 Python
Springboot使用Spring Data JPA实现数据库操作
2021/06/30 Java/Android
浅谈如何保证Mysql主从一致
2022/03/13 MySQL
「女孩的钓鱼慢活」全新版权绘公布
2022/03/21 日漫
Mysql分析设计表主键为何不用uuid
2022/03/31 MySQL
Java时间工具类Date的常用处理方法
2022/05/25 Java/Android