1

我一直在寻找将配置批量加载到 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因为当我尝试通过使用命令在 jBoss AS7.1 中输出资源时/subsystem=messaging/hornetq-server=default:read-resource,它会输出类似

{
    "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)来进行迁移。

4

1 回答 1

1

不完全确定,你究竟想在这里实现什么,但如果你想从文件中执行批量操作,你可以使用jboss-cli.sh --file=commands.cliwhere commands.cliis a text file contains jboss cli commands。

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

具有多个命令的示例文件:

#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 绑定。

于 2018-03-27T12:03:33.843 回答