如何在 WildFly 中离线更新 standalone.xml

How to update standalone.xml offline in WildFly

作为我项目的一部分,我需要支持遗留 JAAS 安全域来保护我的 EJB。我正在关注快速入门 (https://github.com/wildfly/quickstart/tree/master/ejb-security-jaas) and updating the configuration using jboss-cli (https://github.com/wildfly/quickstart/blob/master/ejb-security-jaas/configure-elytron-jaas.cli)。我的 POC 一切正常。

但是,当我尝试在生产代码中应用这个概念时,我遇到了一个问题。我们将我们的生产代码与 WildFly 一起打包,并要求客户启动我们的产品(在内部启动 WildFly)。根据我的理解,jboss-cli 需要 WildFly 运行- 所以,我正在尝试以下两种方法

方法一

  1. 启动 WildFly
  2. 运行 jboss-cli 并进行与支持遗留 JAAS 安全域相关的所有配置
  3. 重启 WildFly

这有很多挑战,包括需要重新启动

方法二

  1. 更新 standalone.xml(在我的产品构建期间使用 ant 脚本)
  2. 将我的生产代码与更新的 standalone.xml 和 WildFly
  3. 一起打包

目前,我正在遵循方法 2,但在我看来,使用 ant 脚本更新 standalone.xml 效率不高。有没有更好的方法?欢迎专家提出任何建议。

您可以使用 embed-server 做您想做的事。下面是我使用 jboss-cli 添加数据源的脚本。其中的关键部分是 embed-serverbatch 部分:

embed-server --server-config=standalone.xml --std-out=echo

batch

module add --name=org.postgres --resources=${user.home}/Downloads/postgresql-42.2.12.jar --dependencies=javax.api,javax.transaction.api

/subsystem=datasources/jdbc-driver=postgres:add(driver-name="postgres",driver-module-name="org.postgres",driver-class-name=org.postgresql.Driver)

/subsystem=datasources/data-source=blah/:add(connection-url=jdbc:postgresql://localhost:5432/blah,driver-name=postgres,jndi-name=java:/jdbc/blah,initial-pool-size=4,max-pool-size=64,min-pool-size=4,password=blah,user-name=blah)

run-batch

您可以看到这是在更新standalone.xml。显然,如果你使用不同的配置文件,你可以在这里使用它。

其中一个重要的部分是 Wildfly 应该而不是 运行。