核心概念:两种主要的停止方式
- 优雅停止:这是推荐的方式,它会通知正在处理请求的应用程序完成当前处理,然后关闭服务器,这可以避免数据丢失和连接中断。
- 强制停止:立即终止所有进程,不进行任何清理,这可能会导致数据损坏或未完成的请求丢失,仅在紧急情况下使用。
独立模式
这是最常见和最简单的部署模式。

方法1:使用 jboss-cli.sh (推荐,优雅停止)
这是官方推荐的命令行管理工具,可以安全地停止服务器。
Linux / Unix / macOS:
# 1. 进入 JBoss/WildFly 的 bin 目录 cd /path/to/wildfly-X.Y.Z.Final/bin # 2. 执行停止命令 ./jboss-cli.sh --connect --command=:shutdown
Windows:
# 1. 进入 JBoss/WildFly 的 bin 目录 cd C:\path\to\wildfly-X.Y.Z.Final\bin # 2. 执行停止命令 jboss-cli.bat --connect --command=:shutdown
命令解析:

jboss-cli.sh/jboss-cli.bat: 命令行接口脚本。--connect: 连接到正在运行的 JBoss/WildFly 服务器。--command=:shutdown: 发送shutdown命令,请求服务器优雅地关闭。
方法2:使用 standalone.sh (优雅停止)
您可以直接在服务器启动脚本上添加 --shutdown 参数来停止它。
Linux / Unix / macOS:
# 进入 bin 目录 cd /path/to/wildfly-X.Y.Z.Final/bin # 执行停止命令 ./standalone.sh --shutdown
Windows:
cd C:\path\to\wildfly-X.Y.Z.Final\bin standalone.bat --shutdown
注意: 此方法需要您知道服务器启动时使用的 管理端口,默认情况下,管理端口是 9990,如果您的端口不是默认值,需要指定:

./standalone.sh --shutdown --management-port=1234
方法3:使用 jps 命令查找并强制杀死进程 (强制停止)
CLI 连接不上或服务器无响应,可以使用此方法。
Linux / Unix / macOS:
# 1. 查找 Java 进程,找出 JBoss 的主进程 ID jps -l | grep "org.jboss.as.standalone" # 输出示例: # 12345 /path/to/wildfly-X.Y.Z.Final/jboss-modules.jar # 2. 根据进程 ID (PID) 强制杀死进程 # 假设 PID 是 12345 kill -9 12345
Windows:
# 1. 查找 Java 进程 jps -lv # 找到包含 "org.jboss.as.standalone.Main" 的那一行,记下 PID # # 12345 C:\path\to\wildfly-X.Y.Z.Final\jboss-modules.jar -- ... # 2. 根据进程 ID (PID) 强制杀死进程 taskkill /F /PID 12345
域模式
在域模式下,有一个管理服务器来控制多个托管服务器。
方法1:使用 jboss-cli.sh (推荐,优雅停止)
在域模式下,您通过管理服务器来停止托管服务器。
Linux / Unix / macOS:
# 1. 进入 JBoss/WildFly 的 bin 目录 cd /path/to/wildfly-X.Y.Z.Final/bin # 2. 连接到管理服务器并停止托管服务器 # 停止所有托管服务器 ./jboss-cli.sh --connect --command=:shutdown # 或者,只停止一个特定的托管服务器 (例如名为 "server-one" 的) ./jboss-cli.sh --connect --command=:shutdown(server-one)
Windows:
cd C:\path\to\wildfly-X.Y.Z.Final\bin jboss-cli.bat --connect --command=:shutdown
方法2:使用 domain.sh (优雅停止)
与独立模式类似,可以直接在域管理脚本上添加 --shutdown 参数。
Linux / Unix / macOS:
cd /path/to/wildfly-X.Y.Z.Final/bin ./domain.sh --shutdown
Windows:
cd C:\path\to\wildfly-X.Y.Z.Final\bin domain.bat --shutdown
同样,如果管理端口不是默认的 9990,需要使用 --management-port 参数指定。
方法3:使用 jps 或 taskkill (强制停止)
如果域管理服务器无响应,可以像独立模式一样,强制杀死主进程。
Linux / Unix / macOS:
# 查找域模式的主进程 jps -l | grep "org.jboss.as.domain" # 找到 PID 后强制杀死 kill -9 <PID>
Windows:
jps -lv # 找到包含 "org.jboss.as.domain.Main" 的 PID taskkill /F /PID <PID>
总结与最佳实践
| 场景 | 推荐命令 (优雅停止) | 备用方案 (强制停止) |
|---|---|---|
| 独立模式 | ./jboss-cli.sh --connect --command=:shutdown |
kill -9 <PID> 或 taskkill /F /PID <PID> |
| 域模式 | ./jboss-cli.sh --connect --command=:shutdown |
kill -9 <PID> 或 taskkill /F /PID <PID> |
最佳实践:
- 优先使用
jboss-cli.sh:这是最安全、最可控的方式,能确保所有资源被正确释放。 - 明确停止目标:在域模式下,确保您是想停止整个域还是仅某个托管服务器。
- 检查日志:在执行停止命令后,可以查看
server.log或domain.log来确认服务器是否已成功关闭。 - 避免强制停止:除非万不得已,否则不要使用
kill -9或taskkill /F,因为它可能导致应用程序状态不一致或数据丢失。
希望这份详细的指南能帮助您顺利停止 JBoss/WildFly 服务器!
