提高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错误
Oct 14 面试题
局部内部类是否可以访问非final变量?
Apr 20 面试题
纬创Java面试题笔试题
Oct 02 面试题
一些高难度的SQL面试题
Nov 29 面试题
2019史上最全Database工程师题库
Dec 06 面试题
北京一家公司的.net开发工程师笔试题
Apr 17 面试题
广州品高软件.net笔面试题目
Apr 18 面试题
一篇.NET面试题
Sep 29 面试题
构造方法和其他方法的区别
Apr 26 面试题
Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Jan 27 面试题
Ruby如何进行文件操作
Jul 17 面试题
如何定义一个可复用的服务
Sep 30 面试题
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
深入理解用mysql_fetch_row()以数组的形式返回查询结果
2013/06/05 PHP
zf框架的db类select查询器join链表使用示例(zend框架)
2014/03/14 PHP
php中$美元符号与Zen Coding冲突问题解决方法分享
2014/05/28 PHP
php实现URL加密解密的方法
2016/11/17 PHP
laravel 如何实现引入自己的函数或类库
2019/10/15 PHP
PHP pthreads v3下同步处理synchronized用法示例
2020/02/21 PHP
js监听滚动条滚动事件使得某个标签内容始终位于同一位置
2014/01/24 Javascript
JS+CSS实现弹出全屏灰黑色透明遮罩效果的方法
2014/12/20 Javascript
jQuery 调用WebService 实例讲解
2016/06/28 Javascript
KnockoutJS 3.X API 第四章之数据控制流with绑定
2016/10/10 Javascript
Bootstrap CSS使用方法
2016/12/23 Javascript
bootstrap下拉菜单使用方法解析
2017/01/13 Javascript
详解Vue如何支持JSX语法
2017/11/10 Javascript
Express结合Webpack的全栈自动刷新
2019/05/23 Javascript
nuxt踩坑之Vuex状态树的模块方式使用详解
2019/09/06 Javascript
jquery validate 实现动态增加/删除验证规则操作示例
2019/10/28 jQuery
vue 组件开发原理与实现方法详解
2019/11/29 Javascript
[03:54]Ehome出征西雅图 回顾2016国际邀请赛晋级之路
2016/08/02 DOTA
python中常用的九种预处理方法分享
2016/09/11 Python
TensorFlow 合并/连接数组的方法
2018/07/27 Python
Pyqt5 实现跳转界面并关闭当前界面的方法
2019/06/19 Python
python之mock模块基本使用方法详解
2019/06/27 Python
Django项目中使用JWT的实现代码
2019/11/04 Python
Python的形参和实参使用方式
2019/12/24 Python
Python爬虫获取豆瓣电影并写入excel
2020/07/31 Python
香港网上花店:FlowerAdvisor香港
2019/05/30 全球购物
后勤园长自我鉴定
2013/10/17 职场文书
单身联谊活动方案
2014/01/29 职场文书
《夸父追日》教学反思
2014/02/26 职场文书
人资专员岗位职责
2014/04/04 职场文书
补充协议书范本
2014/04/23 职场文书
民主生活会整改措施(党员)
2014/09/18 职场文书
学校党的群众路线教育实践活动总结材料
2014/10/30 职场文书
证婚人婚礼致辞
2015/07/28 职场文书
干部作风纪律整顿心得体会
2016/01/23 职场文书
创业计划书之冷饮店
2019/09/27 职场文书