jboss-cli:如何使用jboss-cli读取一个特定的系统属性?

时间:2017-03-30 14:08:59

标签: jboss wildfly jboss-cli

我是jboss-cli的新手并且正在使用' jboss-cli食谱'。

问题

如何使用jboss-cli阅读一个特定属性?例如。

  • jboss.home.dir(例如" -Djboss.home.dir = / path / to / my / jboss")
  • Xmx(" -Xmx = 4G")

上下文

" CLI Recipes"文档有一个有用的示例来获取所有系统属性。然而,其过多的信息'。我想脚本阅读一个特定的属性。

https://docs.jboss.org/author/display/WFLY10/CLI+Recipes#CLIRecipes-

  

JBoss AS7 +中包括OS系统的所有系统属性概述   使用-D,-P或命令行在命令行上指定的属性和属性   --properties arguments。

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

提前致谢

4 个答案:

答案 0 :(得分:0)

这个链接指向了我的答案:我可以使用groovy脚本来获取值。从我看来,“jboss-cli命令行”并没有提供这种灵活性。

https://developer.jboss.org/wiki/AdvancedCLIScriptingWithGroovyRhinoJythonEtc

<强>解决方案

这是jboss home的解决方案。

[对于内存,你可以从“/ core-service = platform-mbean / type = memory /:read-attribute(name = heap-memory-usage)”获得结果“

<强>的bash

#!/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()  

答案 1 :(得分:0)

你可以做:

  

:解析表达式(表达式= $ {jboss.home.dir})

答案 2 :(得分:0)

您也可以通过Wildfly管理的休息电话来做到这一点。

  • http:// localhost:9990 / management
  • 开机自检
  • 标题= Content-Type:应用程序/ json
  • 身体= { “ operation”:“解决表达式”, “表达式”:“ $ {jboss.home.dir}” }

答案 3 :(得分:0)

您可以像这样使用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/"

有点丑陋,如果值是“ value” =>“ value =“或可怕的东西,那么在某些情况下会很讨厌。 一般来说,这可以。

将sed命令更改为更具体一些以解决该问题。