You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Bash/CLI启停JBoss 5.1中的单个WAR应用?需定时脚本

在JBoss 5.1中单独启停WAR应用(Bash/CLI方案)

完全可以通过Bash/CLI单独启停JBoss 5.1中的WAR应用,无需重启整个JBoss服务。下面是具体实现方案:

核心工具:JBoss自带的twiddle.sh

JBoss 5.1内置了twiddle.sh工具(位于$JBOSS_HOME/bin/目录),它可以通过JMX接口调用MBean来管理部署的应用。

1. 验证目标应用的MBean名称

先确认要操作的WAR对应的MBean标识,执行以下命令列出所有Web部署的MBean:

$JBOSS_HOME/bin/twiddle.sh query 'jboss.web.deployment:*'

输出会类似:

jboss.web.deployment:war=app1.war,id=123456
jboss.web.deployment:war=app2.war,id=789012
jboss.web.deployment:war=app3.war,id=345678

其中war=xxx.war就是我们需要的标识。

2. 单独启停指定WAR应用

停止应用

针对app1.war和app2.war,执行停止命令:

# 停止app1.war
$JBOSS_HOME/bin/twiddle.sh invoke "jboss.web.deployment:war=app1.war,id=*" stop
# 停止app2.war
$JBOSS_HOME/bin/twiddle.sh invoke "jboss.web.deployment:war=app2.war,id=*" stop

id=*用于匹配该WAR对应的任意MBean实例,避免因id变化导致命令失效。

启动应用

需要恢复时,将命令中的stop替换为start即可:

# 启动app1.war
$JBOSS_HOME/bin/twiddle.sh invoke "jboss.web.deployment:war=app1.war,id=*" start
# 启动app2.war
$JBOSS_HOME/bin/twiddle.sh invoke "jboss.web.deployment:war=app2.war,id=*" start

定时维护脚本实现

1. 编写启停脚本

创建maintain_apps.sh脚本,支持stop/start两种操作:

#!/bin/bash
# 配置JBoss安装路径
JBOSS_HOME="/opt/jboss-5.1.0.GA"
# 指定需要维护的应用列表
TARGET_APPS=("app1.war" "app2.war")

# 校验操作参数
ACTION=$1
if [ -z "$ACTION" ] || [[ "$ACTION" != "stop" && "$ACTION" != "start" ]]; then
    echo "Usage: $0 [stop|start]"
    exit 1
fi

# 执行对应操作
for app in "${TARGET_APPS[@]}"
do
    echo "[$(date)] $ACTION-ing application: $app"
    # 若JMX连接失败,可添加-s参数指定JMX地址,例如:-s jnp://localhost:1090
    $JBOSS_HOME/bin/twiddle.sh invoke "jboss.web.deployment:war=$app,id=*" $ACTION
done

2. 赋予脚本执行权限

chmod +x /path/to/maintain_apps.sh

3. 配置定时任务(Crontab)

使用crontab设置维护时段的定时任务,例如:

  • 每周日凌晨2点停止目标应用
  • 每周日凌晨4点恢复目标应用

编辑当前用户的crontab(建议使用运行JBoss的用户登录后操作):

crontab -e

添加以下内容:

# 周日凌晨2点停止应用
0 2 * * 0 /path/to/maintain_apps.sh stop >> /var/log/jboss_maintain.log 2>&1
# 周日凌晨4点启动应用
0 4 * * 0 /path/to/maintain_apps.sh start >> /var/log/jboss_maintain.log 2>&1

>> /var/log/jboss_maintain.log 2>&1用于将操作日志输出到指定文件,方便后续排查。

注意事项

  • 确保执行脚本的用户拥有JBOSS_HOME目录的读写权限,且与运行JBoss的用户一致,避免权限问题。
  • 如果twiddle.sh无法连接JMX,可添加-s参数指定JMX服务地址,默认是jnp://localhost:1090。
  • 操作前建议先在测试环境验证命令,避免影响生产系统。

内容的提问来源于stack exchange,提问作者Hussain Akbar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 07:31:06