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

面试题 相关文章推荐
如何提高JDBC的性能
Apr 30 面试题
求网格中的黑点分布
Nov 06 面试题
怎样建立和理解非常复杂的声明?例如定义一个包含N 个指向返回 指向字符的指针的函数的指针的数组?
Mar 19 面试题
介绍一下#error预处理
Sep 25 面试题
如何在Oracle中查看各个表、表空间占用空间的大小
Oct 31 面试题
Hashtable 添加内容的方式有哪几种,有什么区别?
Apr 08 面试题
new修饰符是起什么作用
Jun 28 面试题
在weblogic中发布ejb需涉及到哪些配置文件
Jan 17 面试题
EJB3.1都有哪些改进
Nov 17 面试题
介绍一下Prototype的$()函数,$F()函数,$A()函数都是什么作用?
Mar 05 面试题
几道Java和数据库的面试题
May 30 面试题
Java程序员面试题
Jul 15 面试题
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速度全攻略
2006/10/09 PHP
WordPress判断用户是否登录的代码
2011/03/17 PHP
详解php中空字符串和0之间的关系
2016/10/23 PHP
Laravel 框架返回状态拦截代码
2019/10/18 PHP
Thinkphp框架+Layui实现图片/文件上传功能分析
2020/02/07 PHP
phpstudy2020搭建站点的实现示例
2020/10/30 PHP
JavaScript入门教程(2) JS基础知识
2009/01/31 Javascript
JavaScript实现动态增加文件域表单
2009/02/12 Javascript
jQuery的attr与prop使用介绍
2013/10/10 Javascript
js实现动态改变字体大小代码
2014/01/02 Javascript
使用jQuery和PHP实现类似360功能开关效果
2014/02/12 Javascript
Javascript 浮点运算精度问题分析与解决
2014/03/26 Javascript
javascript 实现 原路返回
2015/01/21 Javascript
jQuery满屏焦点图左右滚动特效代码分享
2015/09/07 Javascript
Node.js 应用跑得更快 10 个技巧
2016/04/03 Javascript
jquery实现点击弹出可放大居中及关闭的对话框(附demo源码下载)
2016/05/10 Javascript
浅谈jquery上下滑动的注意事项
2016/10/13 Javascript
bootstrap的常用组件和栅格式布局详解
2017/05/02 Javascript
javascript实现文字无缝滚动效果
2017/08/26 Javascript
vue.js实例对象+组件树的详细介绍
2017/10/20 Javascript
js 函数性能比较方法
2020/08/24 Javascript
[46:25]DOTA2上海特级锦标赛主赛事日 - 4 败者组第五轮 MVP.Phx VS EG第二局
2016/03/05 DOTA
python字典多条件排序方法实例
2014/06/30 Python
浅析Python中else语句块的使用技巧
2016/06/16 Python
Python如何快速实现分布式任务
2017/07/06 Python
Python对列表中的各项进行关联详解
2017/08/15 Python
为什么选择python编程语言入门黑客攻防 给你几个理由!
2018/02/02 Python
python基础梳理(一)(推荐)
2019/04/06 Python
Python中一些深不见底的“坑”
2019/06/12 Python
使用django实现一个代码发布系统
2019/07/18 Python
Python 统计位数为偶数的数字代码详解
2020/03/15 Python
python使用信号量动态更新配置文件的操作
2020/04/01 Python
python邮件中附加文字、html、图片、附件实现方法
2021/01/04 Python
金融学专科生自我鉴定
2014/02/21 职场文书
团员个人年度总结
2015/02/26 职场文书
vue组件vue-esign实现电子签名
2022/04/21 Vue.js