Wildfly 管理 CLI 配置

Posted

技术标签:

【中文标题】Wildfly 管理 CLI 配置【英文标题】:Wildfly Management CLI Configuration 【发布时间】:2018-09-05 15:27:57 【问题描述】:

我一直在寻找将配置批量加载到 wildfly 的方法(比如我有一个 json 数据)。

类似这样的东西。

./jboss-cli.sh -c subsystem=messagingactivemq/server=default:add(<data.json>)

在哪里<data.json>


    "outcome" => "success",
    "result" => 
        "address-full-policy" => "BLOCK",
        "dead-letter-address" => "jms.queue.DLQ",
        "expiry-address" => "jms.queue.ExpiryQueue",
        "last-value-queue" => false,
        "max-delivery-attempts" => 10,
        "max-size-bytes" => 12333,
        "message-counter-history-day-limit" => 10,
        "page-max-cache-size" => 5,
        "page-size-bytes" => 12333,
        "redelivery-delay" => 0,
        "redistribution-delay" => 222L,
        "send-to-dla-on-no-route" => false
    

我想通过jboss-cli将上面的json直接加载到wildlfy。这甚至可能吗?在过去的几周里,我一直在寻找这方面的参考资料。欢迎任何意见。

已编辑 为了明确我的目标,我正在尝试将 jBoss AS7.1 上的手动配置项目迁移到 Wildfly 10.1。目前迁移脚本只支持 EAP 版本的 jBoss。所以我必须手动从 jBoss 中选择要迁移到 Wildfly 的配置。是的,wildfly 中有些配置已被弃用和/或删除,因此在 jBoss AS7.1 和 Wildfly10.1 之间,我必须在将配置加载到 wildfly 之前对配置进行一些更改,因此我提到了 json 数据。

自从我尝试通过jboss-cli.sh 使用命令/subsystem=messaging/hornetq-server=default:read-resource 在jBoss AS7.1 中输出资源时,它会输出类似


    "outcome" => "success",
    "result" => 
        "acceptor" => undefined,
        "allow-failback" => true,
        "async-connection-execution-enabled" => true,
        "backup" => false,
        "bridge" => undefined,
        "broadcast-group" => undefined,
        "cluster-connection" => undefined,
    ... some resource ....

所以我将对以上数据进行一些修改(因为wildfly使用activemq)并将其作为activemq加载到wildfly。但它只是想使用json数据并将其直接加载到wildfly的jboss-cli.sh。我想自动化这个,只需执行一个脚本(shell)来进行迁移。

【问题讨论】:

【参考方案1】:

不完全确定,您究竟想在这里实现什么,但如果您想从文件执行批量操作,您可以使用jboss-cli.sh --file=commands.cli,其中commands.cli 是包含jboss cli 命令的文本文件。

这样您可以一次执行多个操作,此外,您还可以利用 JBoss CLI 提供的batch 功能来确保应用或恢复所有更改。

包含多个命令的示例文件:

#Add xa datasource
xa-data-source add  \
    --name=my.app.ds \
    --jndi-name=java:jboss/datasources/my.app.ds \
    --driver-name=h2 \
    --user-name=username \
    --password=password \
    --use-java-context=true \
    --enabled=true \        
    --xa-datasource-properties="URL"=>"jdbc:h2:tcp://$env.DB_HOST:localhost:$env.DB_PORT:1521/~/my.app.ds;MVCC=TRUE"

#Add JMS queue
jms-queue add --queue-address=foo.bar.myapp.queue --entries=java:/jms/queue/foo.bar.myapp.queue 

#Add system property
/system-property=ENABLE_MY_COOL_MESSAGING_FEATURE:add(value="true")

如果你想基于JSON文件或CLI命令格式以外的任何其他格式定义模块或执行操作,恐怕你不走运。您可以创建自己的 java 库来包装 JBoss CLI 来执行它 - 因为我相信 JBoss/Wildfly 为 Java 和 Python 提供 CLI 绑定。

【讨论】:

明白了,请阅读上面的编辑帖子。我最初是这样做的,但由于计划是自动化迁移,因此非常乏味。正如您所提到的,我将尝试 CLI 绑定。谢谢 如果你想迁移,你可以试试official migration tool。 JBoss AS7 应该具有与 EAP 6.4 兼容的配置,Wildfly 10.1 应该与 EAP 7.2 兼容(因为 wildfly 是 EAP 的上游)。所以你可以使用迁移模板 eap6.4-eap7.2 这是否需要一个实际的 EAP 6.4 安装程序/服务器?我认为这需要一个。限制是我没有任何非社区 jboss 应用程序的副本 是的,但您可以轻松下载 EAP 发行版 - 您只需要一个 RedHat 开发者帐户(免费)

以上是关于Wildfly 管理 CLI 配置的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Wildfly 中删除 KeyCloak?

Wildfly CLI 不适合我

如何使用 CLI 将模块添加到 Wildfly

在 Wildfly 8.2 中配置日志的正确方法

WildFly 21 CLI 无法识别 Amazon Linux 2 上的现有文件路径

如何通过 CLI 获取 Wildfly 服务器状态?