J2EE應用部署(三):進階篇

來源:互聯網
上載者:User
提綱:
===================================
一、模組次序問題
二、依賴庫的問題
2.1 解決方案之一
2.2 解決方案之二
2.3 依賴庫應用執行個體
===================================
本文:
===================================
在前面兩篇文章中,我們瞭解了J2EE應用封裝和部署的基本概念和實踐操作,下面我們來看看幾個可能遇到的問題。
一、模組次序問題
J2EE規範沒有對EAR檔案內的J2EE模組應該如何部署作出任何規定。特別地,J2EE規範沒有明確規定部署模組的次序。如果一個模組中的某個組件要用到另一個待部署模組的組件,它可能會帶來問題。
因此,必須注意大多數應用伺服器以如下步驟部署EAR檔案:
EAR檔案內的所有資來源配接器作為基本連接器部署。如果存在多個資來源配接器,則它們的部署次序就是它們在application.xml部署描述器中列出的次序。
部署所有EJB模組。由於EJB可能在初始化期間用到某些資來源配接器,所以EJB的部署在資來源配接器之後。如果存在多個EJB模組,它們的部署次序將是它們在application.xml中列出的次序。
部署所有Web應用模組。由於Web應用初始化期間可能用到資來源配接器和EJB,所有Web應用在這兩者之後部署。如果存在多個Web應用模組,它們部署次序就是它們在application.xml中列出的次序。
二、依賴庫的問題
在J2EE應用封裝和部署過程中,最常見的問題出現在工具類和支援類上。封裝Web應用或EJB應用時,這些庫應該放在哪裡?Web應用和EJB應用一般都有被“卸出”(這裡指裝入的反向過程)的能力,這種能力由部署時裝入它們的類裝載器支援。如果我們把工具類和支援類放入應用伺服器的標準類路徑,這些類很可能完全失去被卸出的能力。這樣,如果Web應用或EJB應用要更新某個庫的版本,重新部署Web應用或EJB應用時,包含工具類和支援類的依賴庫也要重新部署。在這種情形下,把工具類放入應用伺服器標準類路徑很不方便,因為每次部署Web應用和EJB應用時,都要重新啟動整個應用伺服器,這顯然不是理想的選擇。
那麼,在J2EE標準定義中,假定依賴庫放在哪裡才能實現運行時的重新部署(熱部署)呢?有兩個簡單的方案,但從根本上來說兩者都不甚合理:
以JAR檔案形式封裝的依賴庫可以放入Web應用的WEB-INFlib目錄。一般地,WEB-INFlib目錄基本上只用來存放Servlet,JSP頁面和Servlet會在讀取新類時尋找該目錄。如果工具類庫只供一個Web應用的JSP頁面和Servlet使用,應該說這個方案已經足夠。然而,如果EJB組件、JMS消費者、啟動應用的類和關閉應用的類也要用到同一工具類庫,這種方案不再有效,因為對於它們來說,WEB-INFlib目錄是不可見的。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.