JBoss AS 7 部署機制較舊版大幅變更:採用掃描器掃描 standalone/deployments 目錄,並引入標記檔案 機制讓使用者控制部署行為。本文實戰演示 WAR/EAR 部署、自動/手動模式切換、資料源配置與標記檔操作。
$ cd jboss-as-7.0.0.Final/bin
$ ./standalone.sh
mvn archetype:generate -DartifactId=my-webapp -DarchetypeArtifactId=maven-archetype-webappmvn package → target/my-webapp.warcp target/my-webapp.war $JBOSS_HOME/standalone/deployments/Deployed "my-webapp.war",context-root 為 /my-webapp。standalone/configuration/standalone.xml 中 deployment-scanner 子系統:
<subsystem xmlns="urn:jboss:domain:deployment-scanner:1.0">
<deployment-scanner scan-interval="5000"
relative-to="jboss.server.base.dir" path="deployments"/>
</subsystem>
scan-interval:掃描間隔 (毫秒)。auto-deploy-zipped="true":自動部署 .war/.ear 壓縮檔。auto-deploy-exploded="false":不自動部署展開目錄。$ ./jboss-cli.sh --connect
[standalone@localhost:9999 /] /subsystem=deployment-scanner:read-resource(recursive=true)
[standalone@localhost:9999 /] /subsystem=deployment-scanner/scanner=default:remove # 停用自動掃描
[standalone@localhost:9999 /] deploy /path/to/app.war # 手動部署
[standalone@localhost:9999 /] /subsystem=deployment-scanner/scanner=default:add(scan-interval=5000,relative-to=jboss.server.base.dir,path=deployments) # 恢復
部署目錄下的標記檔 (同檔名 + 後綴) 表示狀態與指令:
| 標記檔 | 含義 | 誰建立 |
|---|---|---|
.deployed | 部署成功 | 掃描器 |
.failed | 部署失敗 | 掃描器 |
.isdeploying | 正在部署中 | 掃描器 |
.dodeploy | 請求部署 (覆蓋失敗/更新) | 使用者 |
.undeploy | 請求解除部署 | 使用者 |
.skipdeploy | 忽略此檔案 | 使用者 |
demo.war 部署失敗,產生 demo.war.failed。persistence.xml 中 JNDI 名稱:java:jboss/datasources/ExampleDS (AS7 內建 H2 資料源)。demo.war (此時掃描器不會自動重新部署失敗項目)。touch demo.war.dodeploy。.isdeploying → .deployed,部署完成。使用 JBoss 提供的原型快速生成:
mvn archetype:generate \
-DarchetypeArtifactId=jboss-javaee6-webapp \
-DarchetypeGroupId=org.jboss.weld.archetypes \
-DarchetypeVersion=1.0.1.Beta1 \
-DgroupId=net.bluedash -DartifactId=demo -Dversion=1.0-SNAPSHOT
注意:需 Maven 3.0+ 編譯。部署流程同上,只需確保資料源 JNDI 名稱與 AS7 內建或自訂資料源一致。
standalone/deployments 掃描目錄與 standalone.xml 掃描器配置。standalone.xml,專案引用 JNDI 名稱即可。