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

面试题 相关文章推荐
方法名是否可以与构造器的名字相同
Jun 04 面试题
关联、聚合(Aggregation)以及组合(Composition)的区别
Feb 29 面试题
简述索引存取方法的作用和建立索引的原则
Mar 26 面试题
委托与事件是什么关系?为什么要使用委托
Apr 18 面试题
描述RIP和OSPF区别以及特点
Jan 17 面试题
某/etc/fstab文件中的某行如下: /dev/had5 /mnt/dosdata msdos defaults,usrquota 1 2 请解释其含义
Sep 18 面试题
软件测试面试题
Jan 05 面试题
Java中的基本数据类型所占存储空间大小固定的吗
Feb 15 面试题
北京振戎融通Java面试题
Sep 03 面试题
Unix如何在一行中运行多个命令
May 29 面试题
Servlet面试题库
Jul 18 面试题
Delphi CS笔试题
Jan 04 面试题
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的五种设计模式
2012/09/05 PHP
php实例分享之二维数组排序
2014/05/15 PHP
ThinkPHP的SAE开发相关注意事项详解
2016/10/09 PHP
PHP实现导出excel数据的类库用法示例
2016/10/15 PHP
php 基础函数
2017/02/10 PHP
PDO::query讲解
2019/01/29 PHP
javascript 面向对象全新理练之原型继承
2009/12/03 Javascript
javascript smipleChart 简单图标类
2011/01/12 Javascript
Javascript中产生固定结果的函数优化技巧
2013/01/16 Javascript
js数组操作学习总结
2013/11/04 Javascript
jQuery表格行上移下移和置顶的实现方法
2015/10/08 Javascript
全面解析jQuery $(document).ready()和JavaScript onload事件
2016/06/08 Javascript
老生常谈JavaScript数组的用法
2016/06/10 Javascript
使用jQuery.Qrcode插件在客户端动态生成二维码并添加自定义Logo
2016/09/01 Javascript
bootstrap weebox 支持ajax的模态弹出框
2017/02/23 Javascript
jQuery实现百度登录框的动态切换效果
2017/04/21 jQuery
详解Nuxt.js中使用Element-UI填坑
2019/09/06 Javascript
javascript解析json格式的数据方法详解
2020/08/07 Javascript
11个Javascript小技巧帮你提升代码质量(小结)
2020/12/28 Javascript
如何在vue-cli中使用css-loader实现css module
2021/01/07 Vue.js
[47:39]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 LGD vs OPTIC
2018/03/31 DOTA
整理Python最基本的操作字典的方法
2015/04/24 Python
Python实现的异步代理爬虫及代理池
2017/03/17 Python
python使用筛选法计算小于给定数字的所有素数
2018/03/19 Python
PyQt5 pyqt多线程操作入门
2018/05/05 Python
Python closure闭包解释及其注意点详解
2019/08/28 Python
Python散点图与折线图绘制过程解析
2019/11/30 Python
Python 矩阵转置的几种方法小结
2019/12/02 Python
Python flask路由间传递变量实例详解
2020/06/03 Python
CSS3+Sprite实现僵尸行走动画特效源码
2016/01/27 HTML / CSS
企业精神口号
2014/06/11 职场文书
2014年会计主管工作总结
2014/12/20 职场文书
2015年个人思想总结
2015/03/09 职场文书
2015年初一班主任工作总结
2015/05/13 职场文书
2019求职信大礼包
2019/05/15 职场文书
SQL Server携程核心系统无感迁移到MySQL实战
2022/06/01 SQL Server