您可以在不停止伺服器並重新啟動的情況下,對應用程式及其模組進行各種變更。進行這種變更就稱為熱部署和動態重新載入。
開始之前
下列附註適用於本主題的 xmi 檔案參照:
支援的配置: 對於 IBM® 延伸和連結檔而言,.xmi 或 .xml 副檔名取決於您是使用 Java EE 5 之前的應用程式或模組,或 Java™ EE 5 或更新版本的應用程式或模組。
IBM 延伸或連結檔稱為 ibm-*-ext.xmi 或 ibm-*-bnd.xmi,其中 * 是延伸或連結檔的類型,例如:app、application、ejb-jar 或 web。
適用的條件如下:
- 如果應用程式或模組使用第 5 版之前的 Java EE,副檔名必須是 .xmi。
- 如果應用程式或模組使用 Java EE 5 或更新的版本,副檔名必須是 .xml。
如果 .xmi 檔是隨附在應用程式或模組,則本產品會忽略 .xmi 檔。
不過,即使應用程式含有 Java EE 5 之前的檔案,且所用的副檔名是 .xmi,其中也可以有 Java EE 5 或更新版本的模組。
ibm-webservices-ext.xmi、ibm-webservices-bnd.xmi、ibm-webservicesclient-bnd.xmi、ibm-webservicesclient-ext.xmi 和 ibm-portlet-ext.xmi 檔會繼續使用 .xmi 副檔名。
sptcfg
![[Solaris]](../images/solaris.gif)
限制: 在這些作業系統上執行本產品時,不支援熱部署和動態重新載入功能。
相關聯 Java 開發套件 (JDK) 內的 Java 保存檔 (JAR) 在記憶體內對映。
當 Java 虛擬機器 (JVM) 正在使用這些 JAR 檔時,如果熱部署和動態重新載入功能更新這些檔案,檔案將變得不一致,導致應用程式伺服器當機。
當您在這些作業系統上變更應用程式時,請勿使用熱部署和動態重新載入功能。
反之,請重新啟動應用程式讓變更生效。
本主題假設應用程式檔案部署在伺服器上,而且您想要升級檔案。
請參閱Ways to update enterprise application files,決定是否適合採用熱部署來更新應用程式檔案。
其他方法較簡單,熱部署僅適用於經驗豐富的使用者。
如果您打算在未來匯出應用程式、根據應用程式配置產生外掛程式,或執行其他應用程式管理,請不要使用熱部署。
管理主控台或 wsadmin 應用程式管理功能無法辨識您以熱部署對應用程式所做的變更。
這些功能只能辨識管理程式(例如主控台或 wsadmin)在執行應用程式安裝、更新或其他管理功能期間,所出示的應用程式檔案。
應用程式管理功能無法辨識熱部署所變更的檔案。
重要: 在由部署管理程式管理的正式作業 Cell 中,請勿使用熱部署來更新元件。
熱部署適合開發和測試用途,但在正式作業環境中會引起難以接受的風險。
完整或局部重新同步可能會消除熱部署的元件。另外,執行 restoreconfig 指令可能會改寫對於已展開的應用程式檔案所做的變更。
再者,不同版本的 WebSphere® Application Server 之間不會移轉熱部署的元件。如果要將新的元件或模組新增至企業應用程式,請重新組合 EAR 檔,讓它具有新的元件或模組,再重新部署 EAR 檔。
關於這項作業
熱部署是指在不必停止應用程式伺服器並重新啟動的情況下,將新的元件(例如 WAR 檔、EJB JAR 檔、Enterprise Java Bean、Servlet 和 JSP 檔)新增至執行中伺服器的一種程序。
動態重新載入是指變更現有的元件時,不需要重新啟動伺服器,也能夠讓變更生效。動態重新載入包括:
- 變更應用程式元件的實作,例如變更 Servlet 的實作
- 變更應用程式的設定,例如變更 Web 模組的部署描述子
與更新企業應用程式檔案中所述對已部署的應用程式所做的變更相反,使用熱部署或動態重新載入所做的變更,並不是透過管理主控台或 wsadmin Scripting 指令。
您必須直接在部署應用程式的伺服器上操作應用程式檔案。
如果您更新的應用程式是部署在應用程式類別載入器原則設為 Single 的伺服器上,您可能無法動態重新載入應用程式。
更新應用程式之後,您至少必須重新啟動伺服器。
程序
- 尋找已展開的應用程式檔案。
應用程式檔案位於您安裝應用程式時所指定的目錄,或者,如果您未指定自訂目標目錄,則位於預設目標目錄 app_server_root/installedApps/cell_name。
EAR 檔 ${APP_INSTALL_ROOT}/cell_name/application_name.ear 會指向目標目錄。
節點的 variables.xml 檔定義 ${APP_INSTALL_ROOT}。
必須找出已展開的應用程式檔案,因為安裝應用程式時,WebSphere Application Server 會將 EAR 檔的某些部分 unjar 到將執行應用程式的電腦檔案系統上。
伺服器在執行您的應用程式時會尋找這些已展開的檔案。如果找不到已展開的應用程式檔案,請在應用程式的 deployment.xml 檔中查看 binariesURL 屬性。
這個屬性指定位置供執行時期尋找應用程式檔案。
本資訊中關於熱部署和動態重新載入的剩餘部分,application_root 代表已展開的應用程式檔案的根目錄。
- 尋找應用程式 meta 資料檔。Meta 資料檔包含部署描述子(web.xml、application.xml、ejb-jar.xml 等)、連結檔(ibm-web-bnd.xmi、ibm-app-bnd.xmi 等),以及延伸檔(ibm-web-ext.xmi、ibm-app-ext.xmi 等)。
應用程式的 meta 資料 XML 檔可以從兩個位置載入。
Meta 資料檔可以從應用程式二進位檔所在的同一位置載入(例如 application_root/META-INF),也可以從 WebSphere 配置樹狀結構 ${CONFIG_ROOT}/cells/cell_name/applications
/application_EAR_name/deployments/application_name/ 載入。
使用的位置由應用程式安裝期間指定的 useMetadataFromBinary 旗標值控制。
如果指定此旗標,則會從應用程式二進位檔所在的相同位置載入 meta 資料檔。
如果未指定,則會從配置樹狀結構中的應用程式部署資料夾載入 meta 資料檔。
重要: 您可以遵循本主題中的程序,設定 useMetadataFromBinaries=true、使用熱部署變更已擷取的應用程式副本,讓變更在執行時期生效。
不過,主控台或 wsadmin 應用程式管理功能無法辨識您以熱部署對應用程式所做的變更。
這些功能只能辨識原始應用程式檔案,無法辨識熱部署所變更的檔案。
如果您打算在未來匯出應用程式、根據應用程式配置產生外掛程式,或執行其他應用程式管理,請不要使用熱部署。
熱部署可讓您快速變更應用程式檔案;不支援應用程式的完整管理生命週期。
在本資訊的剩餘部分,metadata_root 代表指定的應用程式或模組的 meta 資料檔位置。
- 必要性的: 如果您在一群使用 WebSphere Application Server, Network Deployment 的機器上執行 WebSphere Application Server,而且在特定節點上變更應用程式,請停用自動同步化。
- 在主控台導覽樹狀結構中,按一下。
- 在「檔案同步化服務」頁面,清除自動同步化勾選框,按一下確定。
當您在一群使用 WebSphere Application Server, Network Deployment 的機器上執行 WebSphere Application Server 時,如果在特定節點的已展開的應用程式目錄中變更磁碟上的檔案,下次進行節點同步化時會失去這些變更。
在 WebSphere Application Server, Network Deployment 環境中,部署管理程式所儲存的配置是正本,只要偵測到正本與特定機器上的副本之間有任何變更,就會導致將正本下載到節點。
- 選擇性的: 在應用程式類別載入器的設定頁面上,檢查應用程式檔案更新時重新載入類別和檢查更新檔案的輪詢間隔指定的值。
如果已啟用重新載入類別,且輪詢間隔大於零 (0),則應用程式更新之後會重新載入應用程式檔案。
對於 Web 模組中的 JavaServer Pages (JSP) 檔,只有當 ibm-web-ext.xmi 檔的 jspAttributes 中的 IBM 延伸 jspReloadingEnabled 設為 true 時,Web 儲存器才會重新載入 JSP 檔。
在組合工具中編輯 Web 模組的延伸部署描述子時,您可以將 jspReloadingEnabled 設為 true。
- 依需要變更或新增下列元件或模組:
- 您可能需要啟動、停止或重新啟動應用程式,變更才會生效。
Starting or stopping enterprise applications提供使用管理主控台來啟動、停止或重新啟動應用程式的相關資訊。
Starting applications using wsadmin scripting和Stopping applications using wsadmin scripting提供使用 wsadmin Scripting 工具的相關資訊。
- 如果您在步驟 3 中已停用自動同步化,請重新啟用自動同步化:
- 回到「檔案同步化服務」頁面。
- 選取自動同步化。
- 按一下確定。
結果
伺服器上已更新應用程式檔案。
因為是直接操作伺服器上的應用程式檔案,您稍後可能無法使用管理主控台或 wsadmin Scripting 指令來處理檔案。
比方說,如果嘗試在企業應用程式主控台頁面使用匯出來匯出手動變更的應用程式,則您對 installedApps 目錄中的應用程式所做的手動變更不會匯出。
如果要匯出這些變更,您必須手動複製和移動應用程式檔案。