【问题标题】:WildFly CLI run script against embedded serverWildFly CLI 针对嵌入式服务器运行脚本
【发布时间】:2019-08-20 09:46:17
【问题描述】:

我有一些使用jboss-cli -c --controller=... --file=myscript.cli 运行的脚本。 -c--controller 选项很棒,因为我的脚本不知道它应该在哪个服务器上运行并且可以重复用于多个服务器。

我现在想使用offline-cli 功能来避免端口冲突,并防止在设置服务器时通过网络访问服务器。 我现在的问题是,为了启动嵌入式服务器,我必须使用 CLI 命令embed-server,但我不想将该命令添加到我的脚本中,因为脚本不应该知道服务器配置 xml 文件。

很遗憾,我不能同时使用 --command="embed-server --server-config=my-standalone.xml"--file=myscript.cli,因为 CLI 会抱怨:

Only one of '--file', '--commands' or '--command' can appear as the argument at a time.

我尝试的另一件事是:--commands="embed-server --server-config=my-standalone.xml,run-batch --file=\"myscript.cli\" 但这也不起作用,因为我的脚本包含一些 if-else 逻辑,例如:

if (outcome == success) of /subsystem=iiop-openjdk:read-resource()
  /subsystem=iiop-openjdk:remove()
end-if

不幸的是,批处理模式不支持条件逻辑(请参阅https://bugzilla.redhat.com/show_bug.cgi?id=1083176)。

【问题讨论】:

    标签: wildfly jboss-cli


    【解决方案1】:

    如果您使用的是 Unix 系统,您可以尝试以下方法:

    (echo embed-server --std-out=echo  --server-config=my-standalone.xml; cat myscript.cli) | jboss-cli.sh 
    

    【讨论】:

    • 这是一个很好的解决方法,不幸的是我同时使用 Linux 和 Windows 系统,但类似的解决方法也可能在 windows 上(尽管我对 windows shell 的了解不够确定),所以我可能会将其用作后备。
    【解决方案2】:

    简单的方法是在脚本中启动嵌入式服务器:

    embed-server --std-out=echo  --server-config=standalone-full.xml
    /subsystem=messaging-activemq/server=default/jms-queue=inQueue:add(durable=true, entries=["/queue/inQueue","java:jboss/exported/queue/inQueue"])
    /subsystem=messaging-activemq/server=default/jms-queue=outQueue:add(durable=true, entries=["/queue/outQueue","java:jboss/exported/queue/outQueue"])
    quit
    

    不要忘记在 cli 脚本结束时退出 :)

    【讨论】:

    • 我会引用自己的话:我不想将该命令添加到我的脚本中,因为脚本不应该知道服务器配置 xml 文件的名称。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-01
    • 2011-11-29
    • 2016-06-26
    • 2017-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多