我一直在寻找将配置加载到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)即可进行迁移。
答案 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绑定我相信。