提高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...

面试题 相关文章推荐
abstract class和interface有什么区别?
Jan 03 面试题
Java的基础面试题附答案
Jan 10 面试题
C语言怎样定义和声明全局变量和函数最好
Nov 26 面试题
对于没有初始化的变量的初始值可以作怎样的假定
Oct 12 面试题
实现向右循环移位
Jul 31 面试题
系统管理员的职责包括那些?管理的对象是什么?
Jan 18 面试题
软件测试笔试题
Oct 25 面试题
某公司面试题
Mar 05 面试题
介绍一下结构化程序设计方法和面向对象程序设计方法的区别
Jun 27 面试题
Python里面如何拷贝一个对象
Feb 17 面试题
Unix控制后台进程都有哪些进程
Sep 22 面试题
什么是servlet
May 08 面试题
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
SONY SRF-M100的电路分析
2021/03/02 无线电
php简单判断文本编码的方法
2015/07/30 PHP
详谈php静态方法及普通方法的区别
2016/10/04 PHP
php命名空间设计思想、用法与缺点分析
2019/07/17 PHP
yii2.0框架数据库操作简单示例【添加,修改,删除,查询,打印等】
2020/04/13 PHP
Firefox下提示illegal character并出现乱码的原因
2010/03/25 Javascript
一个基于jQuery的树型插件(OrangeTree)使用介绍
2012/05/03 Javascript
js/jquery获取文本框输入焦点的方法
2014/03/04 Javascript
js监听鼠标点击和键盘点击事件并自动跳转页面
2014/09/24 Javascript
JS打字效果的动态菜单代码分享
2015/08/21 Javascript
javascript下拉列表中显示树形菜单的实现方法
2015/11/17 Javascript
分享Javascript实用方法二
2015/12/13 Javascript
jQuery实时显示鼠标指针位置和键盘ASCII码
2016/03/28 Javascript
深入解析JavaScript中的立即执行函数
2016/05/21 Javascript
jQuery简单获取DIV和A标签元素位置的方法
2017/02/07 Javascript
[08:04]TI4西雅图DOTA2前线报道 海涛探访各路人马
2014/07/09 DOTA
Python实现破解猜数游戏算法示例
2017/09/25 Python
numpy中矩阵合并的实例
2018/06/15 Python
HTML的form表单和django的form表单
2019/07/25 Python
python opencv实现图片缺陷检测(讲解直方图以及相关系数对比法)
2020/04/07 Python
cookies应对python反爬虫知识点详解
2020/11/25 Python
用python爬虫批量下载pdf的实现
2020/12/01 Python
如何使用canvas绘制可移动网格的示例代码
2020/12/14 HTML / CSS
马来西亚领先的在线礼品店:Giftr
2018/08/23 全球购物
蔻驰法国官网:COACH法国
2018/11/14 全球购物
给水排水工程专业毕业生推荐信
2013/10/28 职场文书
大学生毕业自我鉴定范文
2013/11/03 职场文书
电子专业毕业生自荐信
2014/05/25 职场文书
预备党员综合考察材料
2014/05/31 职场文书
汽车专业求职信
2014/06/05 职场文书
农民工讨薪标语
2014/06/26 职场文书
监守自盗观后感
2015/06/10 职场文书
教师远程研修感悟
2015/11/18 职场文书
JavaScript实现复选框全选功能
2021/04/11 Javascript
详解TS数字分隔符和更严格的类属性检查
2021/05/06 Javascript
浅谈MySQL之浅入深出页原理
2021/06/23 MySQL