Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jboss 在用于if/else逻辑的Wildfly CLI脚本中使用属性_Jboss_Wildfly - Fatal编程技术网

Jboss 在用于if/else逻辑的Wildfly CLI脚本中使用属性

Jboss 在用于if/else逻辑的Wildfly CLI脚本中使用属性,jboss,wildfly,Jboss,Wildfly,在Wildfly CLI脚本中,可以测试资源是否存在并执行一些条件逻辑: if (outcome != success) of /subsystem=datasources/xa-data-source=MY_DATASOURCE:read-resource // now do something 运行cli时,可以提供脚本中可用的属性,如下所示: $JBOSS_HOME/bin/jboss-cli.sh --file=my.cli --properties=my.properties

在Wildfly CLI脚本中,可以测试资源是否存在并执行一些条件逻辑:

if (outcome != success) of /subsystem=datasources/xa-data-source=MY_DATASOURCE:read-resource  
// now do something  
运行cli时,可以提供脚本中可用的属性,如下所示:

$JBOSS_HOME/bin/jboss-cli.sh --file=my.cli --properties=my.properties  
if (outcome != success) of /system-property=foo:read-resource  
 // now do something  
我想介绍一些基于这些属性的条件逻辑来进行一些条件配置

例如,要配置邮件服务器,有时邮件服务器需要用户名和密码,而在其他情况下,它允许匿名访问。当设置邮件服务器配置时,我希望能够有这样的条件逻辑

if MAILSERVER_USERNAME is defined //confiure mailserver with username password else // configure mailserver without attributes username/password
我唯一能看到的是,如果我已经在standalone-full.xml中添加了一个系统属性设置,我可以这样查询它:

$JBOSS_HOME/bin/jboss-cli.sh --file=my.cli --properties=my.properties  
if (outcome != success) of /system-property=foo:read-resource  
 // now do something  
我想根据从my.properties传入的属性执行一些简单的操作

这可能吗

谢谢


Daniel

您通过的属性
--properties
不能在所有上下文中使用,这使得测试它们的存在非常麻烦:

[standalone@localhost] :resolve-expression(expression=$myProperty)
Unrecognized variable myProperty
[standalone@localhost] :resolve-expression(expression=${myProperty})
{
    "outcome" => "failed",
    "failure-description" => "WFLYCTL0211: Cannot resolve expression '${myProperty}'",
    "rolled-back" => true
}
但是,您可以通过在cli脚本中使用
set
命令来解决该问题:

[standalone@localhost] set myProperty=${myProperty}
[standalone@localhost] :resolve-expression(expression=$myProperty)
{
    "outcome" => "success",
    "result" => "myValue"
}
然后,您可以使用
resolve expression
命令的结果来测试您的属性是否存在:

[standalone@localhost] if (outcome == success) of :resolve-expression(expression=$myProperty)
[standalone@localhost] echo success ! myProperty is set ( $myProperty )
[standalone@localhost] end-if
success ! myProperty is set ( myValue )
如果未定义属性,尝试使用
resolve expression
解析该属性将引发错误:

[standalone@localhost] set myProperty=${notMyProperty}
[standalone@localhost] :resolve-expression(expression=$myProperty)
{
    "outcome" => "failed",
    "failure-description" => "WFLYCTL0211: Cannot resolve expression '${notMyProperty}'",
    "rolled-back" => true
}

您通过
--properties
传递的属性不能在所有上下文中使用,这使得测试它们的存在变得麻烦:

[standalone@localhost] :resolve-expression(expression=$myProperty)
Unrecognized variable myProperty
[standalone@localhost] :resolve-expression(expression=${myProperty})
{
    "outcome" => "failed",
    "failure-description" => "WFLYCTL0211: Cannot resolve expression '${myProperty}'",
    "rolled-back" => true
}
但是,您可以通过在cli脚本中使用
set
命令来解决该问题:

[standalone@localhost] set myProperty=${myProperty}
[standalone@localhost] :resolve-expression(expression=$myProperty)
{
    "outcome" => "success",
    "result" => "myValue"
}
然后,您可以使用
resolve expression
命令的结果来测试您的属性是否存在:

[standalone@localhost] if (outcome == success) of :resolve-expression(expression=$myProperty)
[standalone@localhost] echo success ! myProperty is set ( $myProperty )
[standalone@localhost] end-if
success ! myProperty is set ( myValue )
如果未定义属性,尝试使用
resolve expression
解析该属性将引发错误:

[standalone@localhost] set myProperty=${notMyProperty}
[standalone@localhost] :resolve-expression(expression=$myProperty)
{
    "outcome" => "failed",
    "failure-description" => "WFLYCTL0211: Cannot resolve expression '${notMyProperty}'",
    "rolled-back" => true
}