【发布时间】:2019-10-28 03:47:24
【问题描述】:
我正在尝试使用 Jpype 从 Python 调用 JMX 操作,但在传递参数时出现错误。
它对于不涉及任何参数的操作非常有效。
import jpype
from jpype import java
from jpype import javax
HOST='localhost'
PORT=9000
USER=''
PASS=''
URL = "service:jmx:rmi:///jndi/rmi://%s:%d/jmxrmi" % (HOST, PORT)
#this it the path of your libjvm /usr/lib/jvm/sun-jdk-<version>/jre/lib/amd64/server/libjvm.so on linux
jpype.startJVM("/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so")
java.lang.System.out.println("JVM load OK")
jhash = java.util.HashMap()
jarray=jpype.JArray(java.lang.String)([USER,PASS])
jhash.put (javax.management.remote.JMXConnector.CREDENTIALS, jarray);
jmxurl = javax.management.remote.JMXServiceURL(URL)
jmxsoc = javax.management.remote.JMXConnectorFactory.connect(jmxurl,jhash)
connection = jmxsoc.getMBeanServerConnection();
# This invoke operation works fine as it does not expect any arguments
object = 'Catalina:type=ThreadPool,name="http-nio-8080"'
attribute = "hasNegotiableProtocols"
print(connection.invoke(javax.management.ObjectName(object),attribute, None, None))
# This invoke operation expects string argument ("admin" in this case)
object = "Users:type=UserDatabase,database=UserDatabase"
opt = "findUser"
connection.invoke(javax.management.ObjectName(object),opt,'admin',None)
有人可以建议如何传递第三个和第四个参数吗?我在互联网上搜索了很多,但没有找到如何在 Python 中完成此操作的示例。所有示例都使用“None”和“None”作为第三和第四个参数。
【问题讨论】:
标签: python-3.x jmx jpype