Sun Java System Application Server Enterprise Edition 8.2 管理指南

第 2 章 部署應用程式

本章說明如何在 Application Server 上部署 (安裝) J2EE 應用程式。它包含以下小節:

部署生命週期

安裝 Application Server 並啟動網域之後,即可部署 (安裝) J2EE 應用程式和模組。在部署期間和變更應用程式時,應用程式或模組可能會經過以下階段:

  1. 初始部署

    部署應用程式或模組之前,請啟動網域。

    將應用程式或模組部署 (安裝) 到特定的獨立伺服器實例或叢集。由於應用程式和模組封裝在歸檔檔案中,因此在部署期間應指定歸檔檔案名稱。預設為部署到預設伺服器實例 server

    如果部署到伺服器實例或叢集,則應用程式或模組將存在於網域的中央儲存庫中,並由部署到的所有叢集或伺服器實例參照為目標。

    您還可以使用 asadmin deploy 指令 (而非 Administration Console) 部署到網域。若只將應用程式或模組部署到網域,它會存在於網域的中央儲存庫中,但在您增加參照之前,不會有任何伺服器實例或叢集參照它。

    部署是動態的:部署應用程式或模組後,無需重新啟動伺服器實例即可使用應用程式。如果重新啟動了伺服器實例,所有已部署的應用程式和模組仍將處於部署狀態並且可用。

  2. 啟用或停用

    依預設,將啟用已部署的應用程式或模組,這表示如果應用程式或模組已部署到可存取的伺服器實例或叢集,則可以執行該應用程式或模組並且可由用戶端對其進行存取。若要防止存取,請停用應用程式或模組。在部署之後,已停用的應用程式或模組並未從網域中解除安裝,而且可以輕鬆地將其啟用。

  3. 新增或刪除已部署應用程式或模組的目標

    部署後,應用程式或模組將存在於中央儲存庫中,並可由多個伺服器實例和/或叢集參照。最初,做為目標部署到的伺服器實例或叢集將參考應用程式或模組。

    在部署應用程式或模組之後,若要變更參照應用程式或模組的伺服器實例和叢集,請使用 Administration Console 變更應用程式或模組的目標,或使用 asadmin 工具變更應用程式參照。由於應用程式本身儲存在中央儲存庫中,因此新增或刪除目標將新增或刪除不同目標上同一版本的應用程式。但是,可以在一個目標上啟用而在另一個目標上停用部署到多個目標的應用程式,因此即使應用程式被一個目標參考,也只有在該目標上啟用它時使用者才能對其進行使用。

  4. 重新部署

    若要替代已部署的應用程式或模組,請將其重新部署。重新部署將自動取消部署之前已部署的應用程式或模組,並代之以新應用程式或模組。

    當透過 Administration Console 重新部署時,重新部署的應用程式或模組將部署到網域中,並且所有參照該應用程式或模組的獨立或叢集伺服器實例將自動接收新的版本 (如果已啟用動態重新配置)。如果使用 asadmin deploy 指令來重新部署,請將 domain 指定為目標。

    對於生產環境,請使用捲動升級 (升級應用程式而不中斷服務)。

  5. 取消部署

    若要解除安裝應用程式或模組,請取消部署應用程式或模組。

自動部署

自動部署功能使您能夠透過將預先封裝的應用程式或模組複製到 domain-dir/autodeploy 目錄來部署該應用程式或模組。

例如,將名為 hello.war 的檔案複製到 domain-dir/autodeploy 目錄。若要取消部署應用程式,請從 autodeploy 目錄中移除 hello.war 檔案。

您也可以使用 Administration Console 或 asadmin 工具來取消部署應用程式。在這種情況下,歸檔檔案將保留。


備註 –

自動部署僅適用於預設伺服器實例。


自動部署功能旨在用於開發環境。它與階段作業持續性 (一種生產環境功能) 不相容。如果已啟用自動部署,請勿啟用階段作業持續性

部署未封裝的應用程式

此功能適用於進階開發者。

使用目錄部署僅部署到預設伺服器實例 (server)。您不能使用它來部署到叢集或獨立伺服器實例。

包含未封裝的應用程式或模組的目錄有時稱為展開的目錄。目錄的內容必須與對應的 J2EE 歸檔檔案內容相符。例如,如果部署某一目錄中的 Web 應用程式,則該目錄的內容必須與對應的 WAR 檔案的內容相同。如需有關必需的目錄內容的資訊,請參閱相應的規格。

您可以直接在展開的目錄中變更部署描述元檔案。

如果您的環境配置為使用動態重新載入,則還可以從目錄中動態重新載入已部署的應用程式。如需更多資訊,請參閱配置進階選項

使用部署規劃

此功能適用於進階開發者。

部署規劃是指僅包含特定於 Application Server 的部署描述元的 JAR 檔案。有關這些部署描述元 (例如 sun-application.xml) 的說明,請參閱「Application Server Developer’s Guide」。部署規劃是「JSR 88: J2EE Application Deployment」實作的一部分。使用部署規劃可以部署不包含特定於 Application Server 的部署描述元的應用程式或模組。

若要使用部署規劃進行部署,請指定 asadmin deploy 指令的 --deploymentplan 選項。例如,以下指令將根據 mydeployplan.jar 檔案中指定的規劃來部署 myrosterapp.ear 檔案中的企業應用程式。


$ asadmin deploy --user admin ---deploymentplan mydeployplan.jar myrosterapp.ear

在企業應用程式 (EAR) 的部署規劃檔案中,sun-application.xml 檔案位於根目錄下。根據以下語法來儲存每個模組的部署描述元:module-name.sun-dd-name,其中 sun-dd-name 取決於模組類型。如果模組包括 CMP 映檔案,則該檔案將命名為 module-name.sun-cmp-mappings.xml.dbschema 檔案儲存在根層級目錄下,並用磅符號 (#) 替代每個正斜線字元 (/)。下面列示的內容顯示了企業應用程式 (EAR) 的部署規劃檔案的結構。

$ jar -tvf mydeployplan.jar
420 Thu Mar 13 15:37:48 PST 2003 sun-application.xml
370 Thu Mar 13 15:37:48 PST 2003 RosterClient.war.sun-web.xml
418 Thu Mar 13 15:37:48 PST 2003 roster-ac.jar.sun-application-client.xml
1281 Thu Mar 13 15:37:48 PST 2003 roster-ejb.jar.sun-ejb-jar.xml
2317 Thu Mar 13 15:37:48 PST 2003 team-ejb.jar.sun-ejb-jar.xml
3432 Thu Mar 13 15:37:48 PST 2003 team-ejb.jar.sun-cmp-mappings.xml
84805 Thu Mar 13 15:37:48 PST 2003 team-ejb.jar.RosterSchema.dbschema

在 Web 應用程式或模組檔案的部署規劃中,特定於 Application Server 的部署描述元位於根層級目錄下。如果獨立 EJB 模組包括 CMP Bean,則部署規劃包括位於根層級的 sun-cmp-mappings.xml.dbschema 檔案。在下面列示的內容中,部署規劃介紹了 CMP Bean。

$ jar r -tvf myotherplan.jar
3603 Thu Mar 13 15:24:20 PST 2003 sun-ejb-jar.xml
3432 Thu Mar 13 15:24:20 PST 2003 sun-cmp-mappings.xml
84805 Thu Mar 13 15:24:20 PST 2003 RosterSchema.dbschema

使用 deploytool 公用程式

適用於軟體開發者的 deploytool 公用程式可以封裝並部署 J2EE 應用程式和模組。如需有關如何使用 deploytool 的說明,請參閱「 The J2EE 1.4 Tutorial」。

J2EE 歸檔檔案的類型

軟體供應商將應用程式或模組封裝在歸檔檔案中。若要部署應用程式或模組,請指定歸檔檔案名稱。歸檔檔案的內容和結構是按照 J2EE 平台的規格定義的。J2EE 歸檔檔案的類型有以下幾種:

軟體供應商可以將應用程式組譯為單一 EAR 檔案或多個獨立的 WAR 檔案、EJB JAR 檔案和應用程式用戶端 JAR 檔案。在管理工具中,用於所有類型檔案的部署頁面和指令都是類似的。

命名慣例

在指定網域中,已部署的應用程名稱和模組名稱必須是專屬名稱。

在一個應用程式中,不同類型的模組可以具有相同的名稱。部署應用程式時,將使用 _jar_war_rar 後綴來命名儲存個別模組的目錄。一個應用程式內,類型相同的模組必須具有專屬名稱。此外,在一個應用程式內,資料庫綱目檔的名稱必須是專屬名稱。

建議將類似於 Java 套裝軟體的命名機制用於在 ejb-jar.xml 檔案的 <module-name> 部分中找到的模組檔案名稱、EAR 檔案名稱、模組名稱,以及在 ejb-jar.xml 檔案的 <ejb-name> 部分找到的 EJB 名稱。使用這種類似於套裝軟體的命名機制可以確保不會發生名稱衝突。該命名慣例的優勢不僅適用於 Application Server,也適用於其他 J2EE Application Server。

EJB 元件的 JNDI 查詢名稱也必須是專屬名稱。建立連續的命名慣例可能會非常有用。例如,將應用程式名稱和模組名稱附加到 EJB 名稱中是保證名稱為專屬名稱的方式。在這種情況下,mycompany.pkging.pkgingEJB.MyEJB 即為模組 pkgingEJB.jar 內 EJB 的 JNDI 名稱,該模組封裝於應用程式 pkging.ear 中。

請確定該套裝軟體和檔案的名稱不含有空格或作業系統不支援的非法字元。