通过使用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}")
1条答案
按热度按时间lyr7nygr1#
解决问题了!我应该考虑使用另一个属性而不是connection-url。我只是用user-name测试了上面的内容,它正常工作。上面的问题是由连接URL中的等号(=)引起的。它可以如下重现,并给出相同的错误消息(预期[EXPRESSION,STRING]但为OBJECT”)
因此,它可以归结为转义equals(=)字符,如下所示:
现在我需要了解如何转义变量的内容,如果可能的话。