jboss-cli:如何使用 jboss-cli 读取一个特定的系统属性?
Posted
技术标签:
【中文标题】jboss-cli:如何使用 jboss-cli 读取一个特定的系统属性?【英文标题】:jboss-cli : How do I read one specific system property using jboss-cli? 【发布时间】:2017-08-24 12:35:01 【问题描述】:我是 jboss-cli 的新手,正在学习“jboss-cli recipes”。
问题
我如何使用 jboss-cli 读取一个特定属性?例如。
jboss.home.dir(例如“-Djboss.home.dir=/path/to/my/jboss”) Xmx ("-Xmx=4G")上下文
“CLI 食谱”文档有这个有用的示例来获取所有系统属性。然而它的“太多信息”。我想编写读取一个特定属性的脚本。
https://docs.jboss.org/author/display/WFLY10/CLI+Recipes#CLIRecipes-
JBoss AS7+ 中所有系统属性的概览,包括 OS 系统 使用 -D、-P 或在命令行上指定的属性和属性 --properties 参数。
Standalone
[standalone@IP_ADDRESS:9999 /] /core-service=platform-mbean/type=runtime:read-attribute(name=system-properties)
提前致谢
【问题讨论】:
【参考方案1】:您可以像这样使用 cli:
$JBOSS_HOME/bin/jboss-cli.sh -c --command=/system-property=MY_PROPERTY:read-resource
你会得到这样的输出:
$JBOSS_HOME/bin/jboss-cli.sh -c --command=/system-property=MY_PROPERTY:read-resource
"outcome" => "success",
"result" => "value" => "4.0"
你可以通过管道提取它:
<cli command> | grep "\"value\"" | sed "s/.*value\" => \"\([^\"]*\)\".*/\1/"
它有点难看,如果值是“值”=>“值=”之类的东西或可怕的东西,就会出现一些令人讨厌的边缘情况。 一般来说,这工作正常。
将 sed 命令更改为更具体一点以解决该问题。
【讨论】:
【参考方案2】:你可以做一个:
:resolve-expression(表达式=$jboss.home.dir)
【讨论】:
【参考方案3】:此链接为我指出了答案:我可以使用 groovy 脚本来获取值。据我所知,“jboss-cli 命令行”并没有提供这种灵活性。
https://developer.jboss.org/wiki/AdvancedCLIScriptingWithGroovyRhinoJythonEtc
解决方案
这是 jboss home 的解决方案。
[对于内存,您可以从“/core-service=platform-mbean/type=memory/:read-attribute(name=heap-memory-usage)”获取结果
重击
#!/bin/sh
# Note: must set jbbin to 'jboss home /bin'
groovy -cp $jbbin/client/jboss-cli-client.jar readJbossHome.groovy
时髦 注意:这是“又快又脏”。
import org.jboss.as.cli.scriptsupport.*
cli = CLI.newInstance()
cli.connect()
// Define properties
myParentProp="system-properties"
myProp="jboss.home.dir"
// Retrieve and pluck values
result = cli.cmd("/core-service=platform-mbean/type=runtime:read-resource(recursive=true,include-runtime=false)")
myResult = result.getResponse().get("result")
myParentVal = myResult.get(myParentProp)
myVal = myParentVal.get(myProp)
// Print out results
println "Property detail $myProp is $myVal"
cli.disconnect()
【讨论】:
【参考方案4】:您也可以通过 Wildfly 管理休息呼叫来完成。
http://localhost:9990/management 发布 标头 = 内容类型:应用程序/json 身体 = "操作":"解析表达式", "表达式":"$jboss.home.dir"【讨论】:
【参考方案5】:通过更新的 Teiid DOC,我发现了一些有用的信息,我认为这可能有助于与遇到类似用例的人分享
https://access.redhat.com/documentation/en-us/jboss_enterprise_application_platform/6.3/html/administration_and_configuration_guide/configure_system_properties_using_the_management_cli
帮助使用 jboss-cli 添加、删除和读取系统属性
【讨论】:
以上是关于jboss-cli:如何使用 jboss-cli 读取一个特定的系统属性?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 jboss-cli 在 WildFly 17 中创建 JMS 队列
如何使用 Java 代码使用 jboss-cli 命令将 EAR 文件部署到 wildfly-17.0.1 服务器