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 服务器

JBoss Wildfly 在 jboss-cli 命令行模式下显示属性值

只启动一次 jboss-cli

怎么加“。”作为使用 jboss-cli 的模块的资源根?

jboss-cli.sh 无法在 centos 7 上运行