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

面试题 相关文章推荐
介绍一下#error预处理
Sep 25 面试题
Oracle快照(snapshot)
Mar 13 面试题
如何为DataGridView添加一个定制的Column Type
Jan 21 面试题
什么是反射?如何实现反射?
Jul 25 面试题
3个CCIE对一个工程师的面试题
May 06 面试题
如何保障Web服务器安全
May 05 面试题
能否解释一下XSS cookie盗窃是什么意思
Jun 02 面试题
星空联盟C# .net笔试题
Dec 05 面试题
如何利用find命令查找文件
Feb 07 面试题
实体的生命周期
Aug 31 面试题
如何用Python来进行查询和替换一个文本字符串
Jan 02 面试题
GC是什么?为什么要有GC?
Dec 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
Php+SqlServer实现分页显示
2006/10/09 PHP
PHP新手用的Insert和Update语句构造类
2012/03/31 PHP
ThinkPHP中的常用查询语言汇总
2014/08/22 PHP
解读PHP的Yii框架中请求与响应的处理流程
2016/03/17 PHP
Js base64 加密解密介绍
2013/10/11 Javascript
js实现跨域的几种方法汇总(图片ping、JSONP和CORS)
2015/10/25 Javascript
基于jQuery实现选取月份插件附源码下载
2015/12/28 Javascript
js简单倒计时实现代码
2016/04/30 Javascript
AngularJS内建服务$location及其功能详解
2016/07/01 Javascript
AngularJS的ng Http Request与response格式转换方法
2016/11/07 Javascript
Node.js使用cookie保持登录的方法
2018/05/11 Javascript
JavaScript根据json生成html表格的示例代码
2018/10/24 Javascript
JSON是什么?有哪些优点?JSON和XML的区别?
2019/04/29 Javascript
JS实现的贪吃蛇游戏案例详解
2019/05/01 Javascript
移动端底部导航固定配合vue-router实现组件切换功能
2019/06/13 Javascript
JS前端知识点总结之内置对象,日期对象和定时器相关操作
2019/07/05 Javascript
如何在项目中使用log4.js的方法步骤
2019/07/16 Javascript
深入了解JavaScript 防抖和节流
2019/09/12 Javascript
Vue 数组和对象更新,但是页面没有刷新的解决方式
2019/11/09 Javascript
Node.js文本文件BOM头的去除方法
2020/11/22 Javascript
[34:39]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#1COL VS EG第二局
2016/03/05 DOTA
学习python的几条建议分享
2013/02/10 Python
Python正则表达式常用函数总结
2017/06/24 Python
安装python时MySQLdb报错的问题描述及解决方法
2018/03/20 Python
python 数字类型和字符串类型的相互转换实例
2018/07/17 Python
Python常用特殊方法实例总结
2019/03/22 Python
python使用tkinter库实现五子棋游戏
2019/06/18 Python
如何学习Python time模块
2020/06/03 Python
python能自学吗
2020/06/18 Python
Python 连接 MySQL 的几种方法
2020/09/09 Python
python爬虫利用代理池更换IP的方法步骤
2021/02/21 Python
LTD Commodities:礼品,独特发现,家居装饰,家用器皿
2017/08/11 全球购物
优秀女职工事迹材料
2014/02/06 职场文书
2015年学校安全工作总结
2015/04/22 职场文书
2016年119消防宣传日活动总结
2016/04/05 职场文书
交通安全宣传标语(100条)
2019/08/22 职场文书