默认的,jboss从 JBOSS_HOME/standalone/deployments这个目录查找应用并进行部署。
这个信息配置在JBOSS_HOME/standalone/configuration/standalone.xml这个文件中,找到
<subsystem xmlns="urn:jboss:domain:deployment-scanner:1.0">
在这个文件中,它已经存在了一个<deployment-scanner>子节点,它配置了服务器到相对于 jboss.server.base.dir的deployments目录下查找要部署的应用,如下所示:
<subsystem xmlns="urn:jboss:domain:deployment-scanner:1.0">
<deployment-scanner scan-interval="5000" relative-to="jboss.server.base.dir" path="deployments" />
</subsystem>
这个默认配置代表着,在相对于系统变量jboss.server.base.dir的deployments目录下,查找应用进行部署,每5秒钟扫描一次。
scanner还有其他的一些配置属性:
比如我们单位关于jboss的路径配置是这样的:
<subsystem xmlns="urn:jboss:domain:deployment-scanner:1.1">
<deployment-scanner path="." relative-to="jboss.server.base.dir" auto-deploy-zipped="false" auto-deploy-exploded="false" auto-deploy-xml="false" />
</subsystem>
意思我就不解析了,图中解释的很明了。
此外,如果要额外添加部署目录,可以添加新的deployment-scanner,比如/home/me/as7/mydeployments作为我的部署目录,配置内容如下:
<subsystem xmlns="urn:jboss:domain:deployment-scanner:1.0">
<deployment-scanner scan-interval="5000" relative-to="jboss.server.base.dir" path="deployments" />
<deployment-scanner name="my-external-deployment-scanner" path="/home/jpai/as7/deployments" scan-interval="5000" />
</subsystem>
这里在描述下jboss部署的一些流程:
用户可以将部署内容(war、ear、jar、sar等)放在standalone/deployments目录内,JBoss运行时会自动部署到服务器上,这也是开发时常采用的方式。
部署模式:
1. 自动部署:
扫描器直接监控部署内容,自动部署新的内容。在standalone.xml中与自动部署有关的内容:
<subsystem xmlns="urn:jboss:domain:deployment-scanner:1.1">
<deployment-scanner path="deployments" relative-to="jboss.server.base.dir" scan-interval="5000"/>
</subsystem>
由以上配置中可以看出JBoss会每隔5秒钟去扫描deployments目录(当JBoss以standalone模式运行的时候),您也可以将自动扫描的路径更改为别的地方,同时,您也可以配置多个自动扫描的路径。
由此,只需要把项目包放到所扫描的目录,之后系统会自动部署,部署好了之后会生成一个内容为***.war的***.war.deployed文件
项目在部署时会有以下几种标记文件:
标记文件与相关的部署内容同名,只是附加了一个后缀名。不同的后缀名表明不同的意义。
.dodeploy 由用户放置,表明内容应该被部署或重新部署到运行时
.skipdeploy 只要这个文件存在, 禁用自动部署.
.isdeploying 部署扫描服务放置,表明它已经注意到一个. dodeploy文件,正处在部署内容的过程中,当部署完成后,将自动删除这个文件。
.deployed 部署扫描服务放置,表明内容已经被部署到运行时,如果删除此文件将取消部署。
.failed 部署扫描服务放置,表明部署失败,
.isundeploying 部署扫描服务放置,表明它已经注意到一个.deployed文件已经被删除,正在取消部署内容。执行完毕后这个文件也会被删除。
.undeployed 部署扫描服务放置,表明内容已经村运行时删除,如果用户删除这个文件,在手动模式下不会造成影响,自动模式下会重新部署。
.pending 部署扫描服务放置,表明它已经注意到要部署内容,但尚未通知服务器部署,如果扫描器检测到一些自动部署内容仍在复制过程中,或者存在一些阻止自动部署的问题,将创建这个文件。只要这个条件成立,扫描器不会通知服务器部署或取消部署任何内容。
2. 手动部署:
可通过自己手动创建文件来部署新的项目,如:
拷贝一个test.war的项目包到deployment目录下,之后手动创建一个文件内容为test.war的文件名为test.war.deployed的文件,之后便可访问地址http://127.0.0.1/test
您也可以拷贝一个展开的项目放到deployment目录下面,但要确保项目目录名后缀为.war之类的文件目录,如:把test.war项目展开到test目录,需要把test目录拷贝到deployment目录下,同时更改名字为test.war,同样之后创建一个文件内容为test.war的test.war.deployed的文件即可。
ref:http://grepcode.com/file/repository.jboss.org/nexus/content/repositories/releases/org.jboss.as/jboss-as-deployment-scanner/7.1.3.Final/org/jboss/as/server/deployment/scanner/LocalDescriptions_zh_CN.properties
https://developer.jboss.org/wiki/DeployingAnApplicationFromAnExternalDeploymentLocation
https://docs.jboss.org/author/display/AS7/Deployment+Scanner+configuration
http://www.minunix.com/2013/08/jboss-as7-01/