1

我是 jboss-cli 的新手,并且正在研究“jboss-cli 食谱”。

问题

如何使用 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+ 中所有系统属性的概述,包括操作系统系统属性和在命令行上使用 -D、-P 或 --properties 参数指定的属性。

Standalone
[standalone@IP_ADDRESS:9999 /] /core-service=platform-mbean/type=runtime:read-attribute(name=system-properties)

提前致谢

4

6 回答 6

2

你可以做一个:

:resolve-expression(表达式=${jboss.home.dir})

于 2017-03-31T17:15:17.670 回答
2

您可以像这样使用 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 命令更改为更具体以解决该问题。

于 2020-10-05T09:32:21.357 回答
0

jboss-cli

如果您有一个像 ehsavoie 建议的 cli 命令:resolve-expression(expression=${jboss.home.dir})并且想要使用其中的“结果”属性的内容,jboss-cli您可以将其保存在一个变量中。您可以使用反引号 ( ` ) 来评估表达式。

简单的表达

[standalone@localhost:9990 /] :resolve-expression(expression=${jboss.home.dir})
{
    "outcome" => "success",
    "result" => "/home/user/wildfly"
}

用于有效

[standalone@localhost:9990 /] set wildflydirectory=`:resolve-expression(expression=${jboss.home.dir})`
[standalone@localhost:9990 /] echo $wildflydirectory
/home/user/wildfly

电源外壳

--output-json如果您碰巧使用 PowerShell,则可以借助 cli 的选项和 PowerShell 的ConvertFrom-Jsoncmdlet使用单行程序来提取甚至是深度嵌套的结果。这样,James Roberts 使用 grep 和 sed 的方法中的解析问题就消失了。

$value=(Invoke-Expression "./jboss-cli.ps1 -c --command=':resolve-expression(expression=`${jboss.home.dir})' --output-json" | ConvertFrom-Json).result

引用命令并转义正确的 PowerShell 特殊字符有点棘手。

于 2022-02-10T14:16:06.373 回答
0

您也可以通过 Wildfly 管理休息呼叫来完成。

  • http://localhost:9990/管理
  • 邮政
  • 标头 = 内容类型:应用程序/json
  • 正文 = { "操作":"解析表达式", "表达式":"${jboss.home.dir}" }
于 2020-08-18T07:53:30.400 回答
0

该链接为我指出了答案:我可以使用 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  

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()  
于 2017-03-30T16:11:15.057 回答
0

使用较新的 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 帮助添加、删除和读取系统属性

于 2021-10-15T06:06:10.320 回答