JBoss/WildFly的standalone.xml怎么配置

standalone.xml 是 WildFly 独立模式的核心配置文件,定义服务器全部运行时行为;修改需备份并重启或 CLI 热重载,推荐优先使用管理 CLI 操作,避免直接编辑;关键配置包括网络端口、数据源、安全域、部署扫描器等,添加 JDBC 驱动支持模块安装和 JAR 部署两种方式。

`standalone.xml` 是 WildFly(以及旧版 JBoss AS)独立模式下的核心配置文件,位于 `$WILDFLY_HOME/standalone/configuration/` 目录下。它定义了服务器运行时的模块、数据源、安全域、部署扫描器、线程池、日志、网络接口、子系统等全部行为。修改前务必备份,并在修改后重启服务或使用管理 CLI 热重载。

关键原则:不要直接编辑正在运行的 `standalone.xml`;推荐优先用 ./jboss-cli.sh(Linux/macOS)或 jboss-cli.bat(Windows)操作,避免手误和格式错误。

常用配置项位置与修改方式

所有配置都包裹在 标签下,按功能划分为多个 。常见需调整的部分包括:

  • 网络接口与端口:在 中修改。例如将 HTTP 端口从 8080 改为 9090:
      → 找到
      → 或在启动时加参数:-Djboss.http.port=9090
  • 数据源(DataSource):在 内配置。需指定 JDBC 驱动、连接 URL、用户名密码、连接池参数。例如 PostgreSQL 数据源需先部署驱动模块或使用 JDBC JAR(WildFly 26+ 支持自动部署 .jardeployments/)。
  • 安全域(Security Domain):在 中定义,用于 JAAS 认证。常配合 login-module 使用,如 LdapLoginModule 或自定义类。
  • 部署扫描器(Deployment Scanner):在 中控制自动部署行为。可关闭scan-interval="0")、修改扫描路径(path="deployments")或启用热部署(auto-deploy-zipped="true")。

添加 JDBC 驱动的两种方式

WildFly 不自带 Oracle/MySQL/PostgreSQL 驱动,需手动引入:

  • 方式一:作为模块安装(推荐用于生产)
      → 创建目录:$WILDFLY_HOME/modules/system/layers/base/com/postgresql/main/
      → 放入 postgresql-42.x.x.jarmodule.xml(声明 resource-rootdependencies
      → 在 standalone.xml *册:
  • 方式二:直接部署 JAR(开发调试快捷)
      → 将 postgresql-42.x.x.jar 复制到 $WILDFLY_HOME/standalone/deployments/
      → WildFly 自动识别并注册为驱动(文件名需含 .jar,且无 .deployed.failed 标记)

通过 CLI 安全修改配置(不手动改 XML)

CLI 是最稳妥的方式,支持事务性操作和回滚提示。示例:

  • 添加数据源:
    /subsystem=datasources/data-source=myDS:add(jndi-name="java:/jdbc/myDS", driver-name="postgresql", connection-url="jdbc:postgresql://localhost:5432/mydb", user-name="user", password="pass")
  • 启用 HTTPS:
    /core-service=management/security-realm=ApplicationRealm/server-identity=ssl:add(keystore-path="/path/to/keystore.jks", keystore-password="changeit")
    再绑定到 https socket binding
  • 重载配置(不重启):
    :reload(保存后生效)或 :reload(restart-required=false)(部分变更支持热重载)

验证与排错提示

启动时若报错,重点关注:
– XML 格式是否合法(标签闭合、属性引号、命名空间一致)
– 模块路径是否存在、module.xml 是否写对 resource-root
– 数据源中 connection-url 是否可达,驱动是否已加载(查 /subsystem=datasources/jdbc-driver=xxx:read-resource
– 日志级别设为 DEBUG 可定位子系统初始化失败原因(在 中添加 logger)

不复杂但容易忽略的是命名空间版本号——不同 WildFly 版本对应不同 subsystem 命名空间(如 datasources:5.0 vs 7.0),复制配置时务必核对当前版本文档。