新聞中心
EJB調用是耗時、費力的。怎么提高EJB性能?我們?yōu)榻鉀Q這一問題,開始邊寫邊討論。等到完成了,我才發(fā)現,我們所應用的技巧總結一下,竟有十條。把提高EJB性能的這些技巧總結一下,為以后的項目做參考。

創(chuàng)新互聯-成都網站建設公司,專注成都網站建設、網站建設、網站營銷推廣,國際域名空間,網站空間,成都網站托管有關企業(yè)網站制作方案、改版、費用等問題,請聯系創(chuàng)新互聯。
1.用一個Session Bean封裝多個Entity Bean,將原來的多個Entity Bean的Remote調用和Local調用封裝在一個Session Bean中。所以建立一個ServerFacade,它為多個對象提供統(tǒng)一獲取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規(guī)范的Local接口代替Remote接口。
5.用"transient"關鍵字聲明不必要的數據變量,替代以前的"public"、"private"等,避免不必要的數據變量占用網絡資源。示例:
- 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"
- …
abookesessionBean * NotSupported
7.設置事務的超時時間,在JBoss中,要修改${jboss.home}/server/${jboss.configuration}/conf /jboss-service.xml ,如下所示:
- …
code="org.jboss.tm.TransactionManagerService" - name="jboss:service=TransactionManager">
name="TransactionTimeout">300 - …
8.當事務鎖定數據庫的行記錄時,事務應跨越可能的最小的時間。
9.調整EJB 服務器的各種參數,如線程數、EJB池大小、連接池參數等。以在JBoss修改連接池參數為示例,進行說明。如果JBoss和MySQL相連,配置${jboss.home}/server/${jboss.configuration}/deploy/mysql-service.xml,來修改連接池參數,包括MinSize、MaxSize、BlockingTimeoutMillis、IdleTimeoutMinutes、 Criteria等,各參數的含義如下所示:
◆MinSize :連接池保持的最小連接數。
◆MaxSize :連接池保持的最大連接數。
◆BlockingTimeoutMillis :拋出異常前最大的等待連接時間。
◆IdleTimeoutMinutes :關閉連接前連接空閑的最大時間。
◆Criteria :有ByContainerAndApplication、ByContainer、ByApplication和ByNothing等值。
下面是一個例子:
optional-attribute-name="ManagedConnectionPool"> code="org.jboss.resource.connectionmanager.JBossManagedConnectionPool" - name="jboss.jca:service=LocalTxPool,name=MySqlDS">
name="MinSize">0 name="MaxSize">50 name="BlockingTimeoutMillis">5000 name="IdleTimeoutMinutes">15 name="Criteria">ByContainer
10.對于數據庫事務,應選擇較低成本的事務等級,避免造成壞數據。遞增成本的事務等級包括:
TRANSACTION_READ_UNCOMMITED;
TRANSACTION_READ_COMMITED;
TRANSACTION_REPEATABLE_READ;
TRANSACTION_SERIALIZABLE;
以上是提高EJB性能的技巧,為以后的項目做參考。
【編輯推薦】
- 配置JBoss如何從數據庫里讀取信息
- JBoss Rules的入門學習
- 在JBoss下通過本地接口訪問EJB
- JBoss的classLoader問題
- 用Eclipse啟動JBoss
本文名稱:提高EJB性能十大技巧
本文URL:http://m.fisionsoft.com.cn/article/djppdgs.html


咨詢
建站咨詢
