Wildfly 10.1如何配置外部文件夹部署*-ds.xml文件?
在Wildfly 10.1中配置外部目录自动部署*-ds.xml文件
嗨,作为Wildfly新手,你提到的这个需求其实很好实现,和JBoss 4的URLDeploymentScanner思路类似,但Wildfly的配置方式更规整,我一步步给你讲:
核心配置方法:修改部署扫描器子系统
Wildfly 10.1的部署扫描逻辑都集中在standalone.xml(单机模式)或domain.xml(域模式)的deployment-scanner子系统里,你只需要添加一个指向外部目录的扫描器即可。
步骤1:找到配置文件并定位扫描器节点
打开你的Wildfly安装目录下的standalone/configuration/standalone.xml,找到如下默认扫描器片段:
<subsystem xmlns="urn:jboss:domain:deployment-scanner:2.0"> <deployment-scanner path="deployments" relative-to="jboss.server.base.dir" scan-interval="5000" runtime-failure-causes-rollback="${jboss.deployment.scanner.rollback.on.failure:false}"/> </subsystem>
这个节点负责监听默认的standalone/deployments目录。
步骤2:添加外部目录扫描器
在现有扫描器节点下方,新增一个deployment-scanner节点,指向你的外部数据源目录。比如你想把数据源文件放在/opt/wildfly-external-ds目录下,配置如下:
<subsystem xmlns="urn:jboss:domain:deployment-scanner:2.0"> <deployment-scanner path="deployments" relative-to="jboss.server.base.dir" scan-interval="5000" runtime-failure-causes-rollback="${jboss.deployment.scanner.rollback.on.failure:false}"/> <!-- 新增的外部数据源扫描器 --> <deployment-scanner path="/opt/wildfly-external-ds" scan-interval="5000" scan-enabled="true" deployment-timeout="60"/> </subsystem>
关键参数说明
path:外部目录的绝对路径(如果不想用绝对路径,也可以搭配relative-to指定系统属性,比如relative-to="user.home",再用path设置相对该属性的路径)scan-interval:扫描间隔,单位是毫秒,5000就是每5秒扫描一次目录变化scan-enabled:设为true开启自动扫描部署功能deployment-timeout:部署超时时间(单位秒),防止部署过程卡住
可选:用CLI命令在线配置(无需重启)
如果你不想重启Wildfly,可以用它的命令行工具(CLI)在线添加扫描器:
- 进入Wildfly的
bin目录,执行./jboss-cli.sh(Linux)或jboss-cli.bat(Windows) - 连接到服务器:
connect - 执行添加命令:
/subsystem=deployment-scanner/scanner=external-ds-scanner:add(path="/opt/wildfly-external-ds", scan-interval=5000, scan-enabled=true)
执行完后配置立即生效,不需要重启服务。
注意事项
- 权限问题:Wildfly运行的系统用户必须对这个外部目录有读写权限,否则无法扫描到文件或完成部署
- 文件过滤:如果只想扫描
*-ds.xml文件,可以额外添加filter="*.ds.xml"参数到扫描器节点,这样只会处理数据源文件,忽略其他类型 - 生效验证:配置完成后,把你的
*-ds.xml文件放到外部目录,等待几秒,查看Wildfly的日志,如果看到类似Deployed "xxx-ds.xml"的日志,就说明配置成功了
对比你之前用JBoss 4的URLDeploymentScanner,Wildfly把所有部署扫描逻辑都整合到了子系统配置里,管理起来更统一。
内容的提问来源于stack exchange,提问作者nshweta
相关产品推荐
相关产品推荐

