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

面试题 相关文章推荐
简单说说tomcat的配置
May 28 面试题
杭州时比特电子有限公司SQL
Aug 22 面试题
数据库基础的一些面试题
Feb 25 面试题
存储过程和函数的区别
May 28 面试题
网络技术支持面试题
Apr 22 面试题
斯福泰克软件测试面试题
Feb 16 面试题
软件缺陷的分类都有哪些
Aug 22 面试题
String s = new String(“xyz”);创建了几个String Object?
Aug 05 面试题
如何防止同一个帐户被多人同时登录
Aug 01 面试题
WebSphere面试题:在WebSphere里面如何部署一个应用
Aug 02 面试题
介绍下java.util.Arrays类
Oct 16 面试题
如何通过jdbc调用存储过程
Apr 19 面试题
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函数addslashes和mysql_real_escape_string的区别
2014/04/22 PHP
php的debug相关函数用法示例
2016/07/11 PHP
深入学习微信网址链接解封的防封原理visit_type
2019/08/15 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
2019/12/25 PHP
JavaScript 应用类库代码
2008/06/02 Javascript
25个好玩的JavaScript小游戏分享
2011/04/22 Javascript
jQuery实现页面滚动时层智能浮动定位实例探讨
2013/03/29 Javascript
Js获取数组最大和最小值示例代码
2013/10/29 Javascript
处理文本部分内容的TextRange对象应用实例
2014/07/29 Javascript
JS 使用for循环遍历子节点查找元素
2014/09/06 Javascript
2014 HTML5/CSS3热门动画特效TOP10
2014/12/07 Javascript
JS+CSS实现带关闭按钮DIV弹出窗口的方法
2015/02/27 Javascript
简单的分页代码js实现
2016/05/17 Javascript
微信小程序 MD5加密登录密码详解及实例代码
2017/01/12 Javascript
微信小程序 支付功能(前端)的实现
2017/05/24 Javascript
webpack开发跨域问题解决办法
2017/08/03 Javascript
Vue拖拽组件开发实例详解
2018/05/11 Javascript
关于Vue组件库开发详析
2018/07/01 Javascript
微信小程序canvas实现刮刮乐效果
2018/07/09 Javascript
layui自定义插件citySelect实现省市区三级联动选择
2019/07/26 Javascript
ES6 Iterator接口和for...of循环用法分析
2019/07/31 Javascript
vue input标签通用指令校验的实现
2019/11/05 Javascript
原生js实现的观察者和订阅者模式简单示例
2020/04/18 Javascript
[46:32]Fnatic vs OG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python之PyUnit单元测试实例
2014/10/11 Python
在Python中居然可以定义两个同名通参数的函数
2019/01/31 Python
Django利用cookie保存用户登录信息的简单实现方法
2019/05/27 Python
python使用Word2Vec进行情感分析解析
2020/07/31 Python
Python虚拟环境的创建和使用详解
2020/09/07 Python
css3的过滤效果简单实例
2016/08/03 HTML / CSS
Happy Socks英国官网:购买五颜六色的袜子
2020/11/03 全球购物
群众路线剖析材料怎么写
2014/10/09 职场文书
党的作风建设心得体会
2014/10/22 职场文书
会议欢迎词
2015/01/23 职场文书
2015领导干部廉洁自律工作总结
2015/07/23 职场文书
2016年班主任培训心得体会
2016/01/07 职场文书