Wildfly管理CLI配置

时间:2018-03-27 09:30:44

标签: wildfly jboss-cli

我一直在寻找将配置加载到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。这甚至可能吗?过去几周我一直在寻找有关这方面的参考资料。欢迎提出任何意见。

EDITED 为了清楚我的目标,我正在尝试将jBoss AS7.1上的手动配置项迁移到Wildfly 10.1中。目前,迁移脚本仅支持jBoss的EAP版本。所以我必须手动选择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 个答案:

答案 0 :(得分:0)

不完全确定,您到底想要在这里实现什么,但如果您想从文件执行批量操作,则可以使用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绑定我相信。