gpt4 book ai didi

java - 从 shell 脚本调用 JMX MBean 方法

转载 作者:IT老高 更新时间:2023-10-28 11:33:15 42 4
gpt4 key购买 nike

是否有任何库允许我从 shell 脚本调用 JMX MBean 方法。我们通过 JMX 公开一些操作/管理命令,我们可以让我们的管理员使用 JConsole 或 VisualVM,但有些任务最好留给自动化。在这种自动化中,我们希望能够在正在运行的服务器上调用 JMX MBean 方法,最好是从 shell 脚本中调用。

最佳答案

以下命令行 JMX 实用程序可用:

  1. jmxterm - 似乎是功能最齐全的实用程序。
  2. cmdline-jmxclient - 在 WebArchive 项目中使用似乎非常简单(看起来自 2006 年以来没有任何开发)
  3. Groovy script and JMX - 提供一些非常强大的 JMX 功能,但需要 groovy 和其他库设置。
  4. JManage command linefunctionality - (缺点是它需要一个正在运行的 JManage服务器代理命令)

Groovy JMX 示例:

import java.lang.management.*
import javax.management.ObjectName
import javax.management.remote.JMXConnectorFactory as JmxFactory
import javax.management.remote.JMXServiceURL as JmxUrl

def serverUrl = 'service:jmx:rmi:///jndi/rmi://localhost:9003/jmxrmi'
String beanName = "com.webwars.gameplatform.data:type=udmdataloadsystem,id=0"
def server = JmxFactory.connect(new JmxUrl(serverUrl)).MBeanServerConnection
def dataSystem = new GroovyMBean(server, beanName)

println "Connected to:\n$dataSystem\n"

println "Executing jmxForceRefresh()"
dataSystem.jmxForceRefresh();

cmdline-jmxclient 示例:

如果你有一个

  • MBean:com.company.data:type=datasystem,id=0

使用名为的操作:

  • jmxForceRefresh()

然后你可以写一个简单的 bash 脚本(假设你下载了 cmdline-jmxclient-0.10.3.jar 并和你的脚本放在同一个目录下):

#!/bin/bash

cmdLineJMXJar=./cmdline-jmxclient-0.10.3.jar
user=yourUser
password=yourPassword
jmxHost=localhost
port=9003

#No User and password so pass '-'
echo "Available Operations for com.company.data:type=datasystem,id=0"
java -jar ${cmdLineJMXJar} ${user}:${password} ${jmxHost}:${port} com.company.data:type=datasystem,id=0

echo "Executing XML update..."
java -jar ${cmdLineJMXJar} - ${jmxHost}:${port} com.company.data:type=datasystem,id=0 jmxForceRefresh

关于java - 从 shell 脚本调用 JMX MBean 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1751130/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com