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



作为我项目的一部分,我需要支持遗留JAAS安全域来保护我的ejb。我遵循快速入门(https://github.com/wildfly/quickstart/tree/master/ejb-security-jaas)并使用jboss-cli (https://github.com/wildfly/quickstart/blob/master/ejb-security-jaas/configure-elytron-jaas.cli)更新配置。我的POC一切正常。

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

方法1

  1. 开始WildFly
  2. 运行jboss-cli并做所有与支持旧JAAS安全域相关的配置
  3. 重启WildFly

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

方法2

  1. 更新standalone.xml(在我的产品构建时使用ant脚本)
  2. 打包我的生产代码以及更新的standalone.xml和WildFly

目前,我遵循方法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不应该正在运行。

最新更新