在 jboss-cli 我可以做
[standalone@localhost:10990 /] /system-property=foo.bar:add(value=baz)
{"outcome" => "success"}
[standalone@localhost:10990 /] /system-property=foo.bar:read-resource
{
"outcome" => "success",
"result" => {"value" => "baz"}
}
我可以列出所有系统变量
[standalone@localhost:10990 /] /core-service=platform-mbean/type=runtime:read-attribute(name=system-properties)
其中之一是jboss.home.dir。我愿意:
[standalone@localhost:10990 /] /system-property=jboss.home.dir:read-resource
{
"outcome" => "failed",
"failure-description" => "WFLYCTL0216: Management resource '[(\"system-property\" => \"jboss.home.dir\")]' not foun
d",
"rolled-back" => true
}
那么这是另一种系统变量?
我读到我可以做到:
[standalone@localhost:10990 /] :resolve-expression(expression=${jboss.home.dir})
{
"outcome" => "success",
"result" => "D:\\dev\\eap_wildfly\\eap-7.4.0"
}
但这并不能回答我的问题。
system-property
资源是设置或覆盖系统属性的一种方法。在某些情况下,根据访问系统属性的时间,该资源可能无法工作。
jboss.home.dir
属性是始终从服务器设置的系统属性。您也无法在 system-property
资源中覆盖此设置。如果你这样做:
/system-property=jboss.home.dir:add(value=${jboss.home.dir})
该命令将失败并显示:
{
"outcome" => "failed",
"failure-description" => "WFLYSRV0115: System property jboss.home.dir cannot be set via the xml configuration file or from a management client; it's value must be known at initial process start so it can only set from the command line",
"rolled-back" => true
}
但是,您可以在
jboss.home.dir
环境变量中或通过命令行设置 JAVA_OPTS
系统属性,例如:
$JBOSS_HOME/bin/standalone.sh -Djboss.home.dir=$JBOSS_HOME/
并不是说系统属性有多种类型,只是有多种设置方法。某些属性(如
jboss.home.dir
或 JVM 所需的系统属性)无法在 system-property
配置资源中设置。然而, system-property
配置只是设置系统属性,例如System.setProperty(name, value)
。