jboss 如何使用变量中保存的值

0h4hbjxa  于 2023-04-06  发布在  其他
关注(0)|答案(1)|浏览(162)

通过使用jboss-cli,我试图将数据源的connection-url从一个配置文件复制到另一个配置文件。
这样做的目的是构建一个脚本,允许第三方部署我们的应用程序,而不需要事先知道正在使用的数据库。connection-url只是我们需要复制的值之一。
当然,我可以用这个来读取源URL

/profile=financials/subsystem=datasources/data-source=coda:read-attribute(name=connection-url)

我可以把这个值赋给一个变量(注意反引号的使用)

set db_url=`/profile=financials/subsystem=datasources/data-source=coda:read-attribute(name=connection-url)`

并成功地将该变量的内容作为字符串查看

echo $db_url

但是,当我尝试使用变量写入另一个配置文件时,就像这样

/profile=millennium/subsystem=datasources/data-source=coda:write-attribute(name=connection-url,value=$db_url)

我得到这个错误:应为[EXPRESSION,STRING],但为OBJECT”

{
    "outcome" => "failed",
    "failure-description" => {"domain-failure-description" => "WFLYCTL0097: Wrong type for 'connection-url'. Expected [EXPRESSION, STRING] but was OBJECT"}
,
    "rolled-back" => true
}

所以问题也可能是这样的:如何在jboss-cli中将对象转换为字符串?
非常感谢如果你能帮助!
编辑:我们正在使用Wildfly版本23。
编辑
我想补充的是,我已经尝试了这里解释的例子的每一个(我认为)排列:http://www.mastertheboss.com/jbossas/jboss-script/advanced-wildfly-cli-variables-and-aliases/

Using variables to set attributes
You can also use variables to set values of your configuration. Let’s see an example:

[standalone@localhost:9990 /] set MYVAR=foo
[standalone@localhost:9990 /] /system-property=test:add(value="${MYVAR}")
However, the above command fails with:

{
    "outcome" => "failed",
    "failure-description" => "WFLYCTL0211: Cannot resolve expression '${MYVAR}'",
    "rolled-back" => true
}
That’s because you need to use a different format in your CLI to set values with variables. You need to include a colon (“:”) when setting attributes. That also allows setting a default value. The following will work:

/system-property=test:add(value="${MYVAR:}")
Finally, here is how to allow a default value for your variable:

/system-property=test:add(value="${MYVAR:default}")
lyr7nygr

lyr7nygr1#

解决问题了!我应该考虑使用另一个属性而不是connection-url。我只是用user-name测试了上面的内容,它正常工作。上面的问题是由连接URL中的等号(=)引起的。它可以如下重现,并给出相同的错误消息(预期[EXPRESSION,STRING]但为OBJECT”)

/profile=millennium/subsystem=datasources/data-source=coda:write-attribute(name=connection-url,value=aname=avalue)

因此,它可以归结为转义equals(=)字符,如下所示:

/profile=millennium/subsystem=datasources/data-source=coda:write-attribute(name=connection-url,value=aname\=avalue)

现在我需要了解如何转义变量的内容,如果可能的话。

相关问题