fkjava

          BlogJava 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
            49 Posts :: 0 Stories :: 0 Comments :: 0 Trackbacks

           

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

          1.用一個(gè)Session Bean封裝多個(gè)Entity Bean,將原來(lái)的多個(gè)Entity BeanRemote調(diào)用和Local調(diào)用封裝在一個(gè)Session Bean中。所以建立一個(gè)ServerFacade,它為多個(gè)對(duì)象提供統(tǒng)一獲取EJB Home和獲取對(duì)象的接口。ServerFacade為程序要用到的所有EJBhome handle提供緩存,提高訪問JNDI Name的時(shí)間,達(dá)到提高訪問效率的目的。以后查找JNDI Name的方法都應(yīng)寫在接口里,調(diào)用時(shí)直接從接口調(diào)用。

          2.EJBRemote接口中使用粗粒度的方法,不推薦使用細(xì)粒度方法。

          3.如果EJBRemote接口獲取成功,應(yīng)不再使用Remote接口,而是將Remote接口構(gòu)造成一個(gè)一般的Java對(duì)象,通過調(diào)用一般的JAVA對(duì)象的方法來(lái)達(dá)到減少對(duì)網(wǎng)絡(luò)的訪問。

          4.如果你部署EJB客戶端和EJB在相同的JVM上,建設(shè)使用EJB2.0規(guī)范的Local接口代替Remote接口。

          5."transient"關(guān)鍵字聲明不必要的數(shù)據(jù)變量,替代以前的"public""private"等,避免不必要的數(shù)據(jù)變量占用網(wǎng)絡(luò)資源。

          6.ejb-jar.XML部署文件中,對(duì)Session Bean中非事務(wù)的方法,將trans-attribute屬性賦為"NotSupported""Never"

          7.設(shè)置事務(wù)的超時(shí)時(shí)間,在JBoss中,要修改${jboss.home}/server/${jboss.configuration}/conf/jboss-service.xml

          8.當(dāng)事務(wù)鎖定數(shù)據(jù)庫(kù)的行記錄時(shí),事務(wù)應(yīng)跨越可能的最小的時(shí)間。

          9.調(diào)整EJB 服務(wù)器的各種參數(shù),如線程數(shù)、EJB池大小、連接池參數(shù)等。以在JBoss修改連接池參數(shù)為示例,進(jìn)行說明。如果JBossMySQL相連,配置${jboss.home}/server/${jboss.configuration}/deploy/mysql-service.xml,來(lái)修改連接池參數(shù),包括MinSizeMaxSizeBlockingTimeoutMillisIdleTimeoutMinutesCriteria等,各參數(shù)的含義如下所示:

          1)MinSize :連接池保持的最小連接數(shù)。

          2)MaxSize :連接池保持的最大連接數(shù)。

          3)BlockingTimeoutMillis :拋出異常前最大的等待連接時(shí)間。

          4)IdleTimeoutMinutes :關(guān)閉連接前連接空閑的最大時(shí)間。

          5)Criteria :有ByContainerAndApplicationByContainerByApplicationByNothing等值。

          10.對(duì)于數(shù)據(jù)庫(kù)事務(wù),應(yīng)選擇較低成本的事務(wù)等級(jí),避免造成壞數(shù)據(jù)。遞增成本的事務(wù)等級(jí)包括:

          TRANSACTION_READ_UNCOMMITED,

          TRANSACTION_READ_COMMITED,

          TRANSACTION_REPEATABLE_READ,

          TRANSACTION_SERIALIZABLE

          轉(zhuǎn)自瘋狂軟件

          posted on 2012-05-08 15:52 瘋狂軟件 閱讀(118) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 漠河县| 新兴县| 瑞昌市| 新田县| 万荣县| 东港市| 政和县| 正阳县| 松潘县| 新竹县| 离岛区| 环江| 墨竹工卡县| 淮滨县| 安阳市| 固镇县| 迁安市| 江油市| 孝义市| 聂荣县| 兴宁市| 盘山县| 噶尔县| 安泽县| 四川省| 金秀| 北宁市| 太仓市| 都匀市| 潞城市| 彭山县| 江华| 绥中县| 浦江县| 当雄县| 岳池县| 湄潭县| 双峰县| 炎陵县| 庆元县| 明星|