天天看點

Jboss通過檔案系統部署

版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。 https://blog.csdn.net/inforstack/article/details/70216887

使用者可以将部署内容(war、ear、jar、sar等)放在standalone/deployments目錄内,會自動部署到伺服器運作時。這是開發時常采用的方式。

注:特别是正在運作中的産品系統,推薦使用Jboss AS 7的管理API來部署内容,而不是依賴部署掃描子系統來周期性地掃描這個目錄。

部署模式

Jboss AS 7中的檔案系統部署掃描器不同于以前的版本。掃描器能以兩種不同的模式運作,這取決于它是否會直接監控部署的内容,以決定部署(或重新部署)。

1) 自動部署模式

掃描器直接監控部署内容,自動部署新的内容,重新部署時間戳發生變化的内容。這與以前的AS版本行為相似,也有幾點不同之處:

? 如以展開的方式部署,其中的任何檔案變化都将引起重新部署。因為Jave EE6應用并不需要部署描述

符,是以沒有嘗試監控部署描述符,僅當部署描述符發生變化時重新部署。

? 掃描器會在這個目錄放一個标記檔案,表明嘗試部署或取消部署的狀态。

2) 手動部署模式

掃描器不直接監視部署内容,而是由使用者決定是否或何時部署或取消部署。掃描器依賴一個系統标記檔案,使用者添加或删除标記檔案,掃描器将部署、取消部署或重部署内容。

自動和手動部署模式能根據壓縮部署和展開部署來獨立配置。可通過standalone.xml檔案内

deployment-scanner元素的auto-deploy屬性來配置,如下:

<deployment-scanner scan-interval="5000" relative-to="jboss.server.base.dir"

path="deployments" auto-deploy-zipped="true" auto-deploy-exploded="false"/>

預設壓縮内容用自動部署的方式,展開内容的自動部署是禁用的。強烈推薦展開内容使用手動部署模式,因為展開内容本質上是有缺陷的,掃描器會自動部署部分複制的内容。手動部署模式也允許替換部署資源(如html和css檔案)而不會觸發重新部署。

标記檔案

标記檔案與相關的部署内容同名,隻是附加了一個字尾名。不同的字尾名表明不同的意義。

.dodeploy 由使用者放置,表明内容應被部署或重新部署到運作時

.skipdeploy 隻要這個檔案存在,禁用自動部署。最有用的地方是允許更新展開内容,掃描器不會在更新中開始重新部署。也能用于壓縮内容,盡管掃描器會檢測正在進行中的變化,一直等待到修改完成。

.isdeploying 部署掃描服務放置,表明它已經注意到一個. dodeploy檔案,正處在部署内容的過程中,當部署完成後,将自動删除這個檔案。

.deployed 部署掃描服務放置,表明内容已經被部署到運作時,如果使用者删除這個檔案将取消部署。 .failed 部署掃描服務放置,表明部署失敗,檔案内容将包含一些失敗原因的資訊。自動模式時,删除這個檔案,将有資格再次部署。

.isundeploying 部署掃描服務放置,表明它已經注意到一個.deployed檔案已經被删除,正在取消部署内容。執行完畢後這個檔案會被删除。

.undeployed 部署掃描服務放置,表明内容已從運作時删除。如果使用者删除這個檔案,在手動模式下不會造成影響,自動模式下會重新部署。

.pending 部署掃描服務放置,表明它已經注意到要部署内容,但尚未通知伺服器部署。如果掃描器偵測到一些自動部署内容仍在複制過程中,或者存在一些阻止自動部署的問題,将建立這個檔案。隻要這個條件成立,掃描器不會通知伺服器部署或取消部署任何内容。

示例:

1) 部署壓縮内容

将war或ear拷貝到deployments目錄即可,預設情況下,不需要添加标記檔案,會自動生成。

2) 部署展開内容

将部署内容拷貝到deployments目錄下并添加.dodeploy标記檔案(如example.war.dodeploy)。

3) 取消部署

删除.deployed标記檔案。

本部分内容可參見deployments目錄下的README.txt。