• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    BEA WebLogic平臺下J2EE調優攻略2

    發布: 2008-8-07 09:42 | 作者: 網絡轉載 | 來源: 網絡轉載 | 查看: 99次 | 進入軟件測試論壇討論

    領測軟件測試網

    BEA WebLogic平臺下J2EE調優攻略(2)

    1.3 Web代碼調優
    1.3.1 HttpSession的使用
           應用服務器保存很多會話時,容易造成內存不足,所以盡量減少session的使用,放置session
           里的對象不應該是大對象,最好是簡單小對象,實現串行化接口。當會話不再需要時,應當及時

    調用invalidate()方法清除會話。而當某

    個變量不需要時,及時調用removeAttribute()方法清除變量。請勿將EJB對象放置在session中。
           1.3.2 JSP代碼調優
           目前,在JSP頁面中引入外部資源的方法主要有兩種:include指令,以及include動作。

    include指令:例如,該指令在編譯時引入指定的資源。在編譯之前,帶有include指令的頁面和指定的

    資源被合并成一個文件。被引用的外部資源在編譯時就確定,比運行時才確定資源更高效。
           include動作:例如。該動作引入指定頁面執行后生成的結果

    由于它在運行時完成,因此對輸出結果

    的控制更加靈活。但是,只有當被引用的內容頻繁地改變時,或者在對主頁面的請求沒有出現之前,被

    引用的頁面無法確定時,使用include動作才合算。
           對于那些無需跟蹤會話狀態的jsp,關閉自動創建的會話可以節省一些資源。使用如下page指令

    : ;盡量不要將JSP頁面定義為單線程,應設置為;在JSP頁面最好使用輸出緩存功能,如: ;盡

    量用wl:cache定制標記來緩存靜態或相對

    靜態的內容,緩存jsp:include操作的結果能顯著提高應用程序的運行性能。
           1.3.3 Servlet代碼調優
           Servlet代碼調優比較簡單:在Servlet之間跳轉時,forward比sendRedirect更有效;設置

    HttpServletResponse 緩沖區,如:response.setBufferSize(20000);在init()方法里緩存靜態數據,

    而在destroy()中釋放它;建議在 Servlet里使用ServletOutputStream輸出圖片等對象;避免在Servlet

    和Jsp中定界事務等。
           1.4 JMS代碼調優
           1.4.1 注意必要的事項,避免使用不必要的特征
           JMS提供了強有力的消息處理機制,但是為了最大限度的提高JMS系統的性能,應避免使用不需要

    使用的特征,同時也要注意必要的事項。

    比如:盡量使用接收程序能直接使用的最簡單、最小的消息類型;消息選擇器要盡可能簡單(最好不使用

    ),盡量不要使用復雜的操作符,如like、in或者between 等,使用字符串數據類型的速度最慢;務必為特

    定的應用程序定義特定的JMS連接工廠,并且禁用默認的JMS連接工廠;不要在javax.*與 php?name=web">weblogic.*的

    名字空間中使用JNDI名稱;盡量使用異步消費者,線程不必封鎖以等待消息的到達;使用完JNDI樹上的資

    源后注意關閉。
           1.4.2 消息類型的選擇
           標準JMS提供了五種消息類型,而TextMessage應用最為普遍, 當發送的消息是幾種原始數據類型

    的集合體時,最好使用MapMessage消息類型,而不要使用ObjectMessage,以便減少不

    同系統間的耦合。此外消息是否使用壓縮

    要慎重考慮,壓縮未必能減少消息大小。如果生產者、消費者和目的地并置在同一WebLogic Server內部

    ,通常不使用壓縮。WebLogic特有的XMLMessage能為運行于消息主體之上的消息選擇器提供內嵌式支持

    ,而且易于數據交換。因此,建議應用程序之間傳送消息使用XML消息格式,而應用程序內部間傳送消息

    使用二進制消息格式。
           1.4.3 確認方式的選擇和JMS事務
           使用事務性會話時,盡量使用恰當的消息確認方式:如果需求允許,使用NO_ACKKNOWLEDGE;非持久的訂閱者使用

    DUPS_OK_ACKNOWLEDGE或者MULTICAST_NO_ACKNOWLEDGE。而使用JTA的UserTransaction,確認方式將被忽

    略。在使用JMS事務時,無效的消息會導致事務的回滾,以致消息重發這樣的死循環。此時,可以將無效

    消息發送到錯誤消息隊列,并提交JMS事務,這將確保消息不會再次傳遞。
           1.5 EJB代碼調優
           1.5.1 有效使用設計模式
           GoF 的《設計模式》為我們實現高性能、易擴展的J2EE應用提供理論保障和技術支持。而EJB作

    為J2EE的核心組件和技術,善用設計模式對系統性能影響很大。Service Locator 和Value Object 已為

    我們所熟悉,Floyd Marinescu的《EJB

    Design Patterns》中的Session Fa?ade、Message Fa?ade、EJB Command和Data Transfer Object等設

    計模式更是為我們提供設計典范:緩存對EJBHome的訪問;使用門面模式,不暴露Entity Bean,用

    Session Bean封裝Entity Bean;如果可以異步處理,則用MDB代替Session Bean;封裝業務邏輯在輕量

    級JavaBean中;使用值對象等簡單對象傳遞數據;不直接使用get/set方法操作Entity Bean。當然過度使

    用模式或者牽強套用模式也是不提倡的,總的原則就是減少網絡流量,改進事務管理。
           1.5.2 使用EJB和WebLogic的特性
           使用EJB和WebLogic的新特性往往能提高性能。與EJB2.0特性相關的技巧有:一個Application中

    使用本地接口,對于 Entity Bean肯定使

    用本地接口,避免遠程調用的開銷;使用CMP管理關系,而不是BMP,EJB2.0中CMP的性能大大改善,性能

    和移植性都優于BMP;使用ejbSelect進行內部查詢;使用home方法進行外部查詢和批處理; 數據庫驅動

    級聯刪除等。
           與WebLogic特性相關的技巧有:使用自動生成主鍵,WebLogic為Oracle和Sqlserver兩種數據庫的

    CMP提供了自動生成主鍵功能,節約了Entity Bean產生主鍵的時間,同時設key-cache-size不小于

    100;WebLogic管理事務性能更好,使用容

    器管理,而不是Bean管理事務;WebLogic提供了為CMP動態查詢和批量插入功能,對性能也有很大幫助。
           1.5.3 緩存資源
           對SLSB或者MDB來說,使用setMesssageDrivenContext()或者ejbCreate()方法緩存特定資源,在

    ejbRemove()方法里釋放; 對SLSB或者MDB來說,使用setSessionContext()或者ejbCreate()方法緩存特定

    資源,在ejbRemove()方法里釋放;對Entity Bean來說,使用setEntityContext ()方法緩存特定資源,在

    unSetEntityContext ()方法里釋放。
           1.5.4 如何選擇和使用Entity Bean
           1. 在設計EJB時,要適當考慮EJB的粒度, 細粒度的EJB在事務管理和資源管理的開銷太大,盡量

    創建粗粒度的 EJB , 不要太粗,粗到能

    滿足實際需求就可以;
           2. Entity Bean不是唯一方式,如果只有一個很小的數據子集被經常改變,建議采用JDO;
           3. 在操作大數據量的時候,直接采用JDBC比Entity Bean更有效;
           4. 避免采用返回很大數據組的finder方法,如 FindAll() 方法,因為它的實現代價太大;
           5. 考慮設置域組field groups,減少沒有必要并昂貴的屬性加載,如BLOB;
           6. 對于EJB1.1或者BMP,可以設置

    is-modified-method-name屬性,根據isModified()的值來判斷是否調用ejbStore()等方法,減少沒有必要

    運算;
           7. 避免連接多個表創建BMP,可以使用視圖,存儲過程或者O/R Mapping等方式。
           1.5.5 其他的一些小技巧
           1. 考慮使用 javax.ejb.SessionSynchronization 接口,提供在Rollback之后恢復數據的方法:

    afterBegin(), beforeCompletion(), afterCompletion();
           2. 使用完SFSB之后,調用remove()方法釋放實例;
           3. 假如你不需要EJB服務的時候,建議使用普通Java類;
           4. 避免EJB之間相互調用;
           5. 使用多讀模式。

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    TAG: BEA WebLogic平臺 服務器 攻略 內存


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>