JCC的Java管理扩展(JMX)包装器
jccjmx的Python项目详细描述
摘要:jcc jmx是jcc和pylucene在运行时创建jmx rmi连接器的方便助手,它使用mbean、java管理扩展(jmx)和远程方法调用(rmi)对嵌入式java运行时进行ssh隧道友好监视。对于vmargs
'-dcom.sun.management.jmxremote'(或类似)的连接器,通常的方法仅在启动时有效。同时
这将打开两个端口(一个用于连接器,另一个用于rmi注册表)。
rmi注册表端口是动态分配的,这使得防火墙规则
或ssh/ssl隧道不可能实现。
jccjmx允许您以编程方式启动rmi和jmx连接器,而无需重新启动python应用程序。MBean服务器平台提供实时
监视JRE的内存使用(堆、缓存)、JRE的CPU使用、Java线程、
附加的Python线程等。jdk附带了两个用于监视的gui程序:jconsole和jvisualvm。
我修改了他的代码,并将其从premain代理移植到独立的类中。
usage
=
导入顺序至关重要!必须按照正确的顺序导入并初始化lucene和jccjmx。否则,您的进程将中断。
>;>import lucene
>;>import jccjmx
第二个initvm()只添加jccjmx的类路径
>;>;lucene.initvm()\doctest:+省略号
<;jcc.jccenv对象位于x…>;
>;>;jccjmx.initvm()\doctest:+省略号
<;jcc.jccenv对象位于x…>;
创建侦听端口12345的代理。在应用程序的生命周期中,您应该只创建一个jccjmx agent实例。
>;>agent=jccjmx.jccjmxagent(12345)
默认情况下,代理绑定到127.0.0.1。您可以使用jccjmx.jccjmx agent(“hostname”,portnumber)指定另一个主机名或
ip地址。
rmi将立即创建并绑定到“*:port”,但尚未有代理侦听。必须显式激活。这允许您延迟代理。
>;>;agent.isactive()
false
>;>;agent.start()
>;>;agent.isactive()
true
>;>;agent.stop()
>;>;agent.isactive()
false
GetServiceURL()
u'service:jmx:rmi://127.0.0.0.0.0.0.1:12345/jndi/rmi://127.0.0.0.1:12345/jmxrmi'
$ssh-l12345:127.0.0.0.1:12345服务器
$jconsolservice:jmx:rmi://127.0.0.0.0.0.1:12345/jmx:jmx:rmi://127.0.0.0.0.0.0.0.0.1:12345/jmxrmi/jmxrmi服务:jmx:jmx:jmx:127.0.0./>安全性
==
rmi注册表总是绑定到所有可能的网络设备。这不应该是问题,但我不能保证。
SSL。
故障排除
==
jccjmx设置系统属性,除非它已经设置。您可以
强制使用正确的主机名,例如
-djava.rmi.server.hostname=127.0.0.1
ipv4与ipv6的比较
----
java更喜欢ipv6连接,通常绑定到
ipv6 tcp。如果您在混合网络上遇到问题,可以强制
jre使用
-djava.net.preferipv4stack=true
x
https://blogs.oracle.com/jmxetc/entry/jmx_connecting_through_firewalls_using
==authors
copyright
==
Copyright 2007 Sun Microsystems,Inc.保留所有权利。
JCC包装器,启动/停止功能:
版权所有(C)2012语义有限公司
/
'-dcom.sun.management.jmxremote'(或类似)的连接器,通常的方法仅在启动时有效。同时
这将打开两个端口(一个用于连接器,另一个用于rmi注册表)。
rmi注册表端口是动态分配的,这使得防火墙规则
或ssh/ssl隧道不可能实现。
jccjmx允许您以编程方式启动rmi和jmx连接器,而无需重新启动python应用程序。MBean服务器平台提供实时
监视JRE的内存使用(堆、缓存)、JRE的CPU使用、Java线程、
附加的Python线程等。jdk附带了两个用于监视的gui程序:jconsole和jvisualvm。
usage
=
导入顺序至关重要!必须按照正确的顺序导入并初始化lucene和jccjmx。否则,您的进程将中断。
>;>import lucene
>;>import jccjmx
第二个initvm()只添加jccjmx的类路径
>;>;lucene.initvm()\doctest:+省略号
<;jcc.jccenv对象位于x…>;
>;>;jccjmx.initvm()\doctest:+省略号
<;jcc.jccenv对象位于x…>;
创建侦听端口12345的代理。在应用程序的生命周期中,您应该只创建一个jccjmx agent实例。
>;>agent=jccjmx.jccjmxagent(12345)
默认情况下,代理绑定到127.0.0.1。您可以使用jccjmx.jccjmx agent(“hostname”,portnumber)指定另一个主机名或
ip地址。
rmi将立即创建并绑定到“*:port”,但尚未有代理侦听。必须显式激活。这允许您延迟代理。
>;>;agent.isactive()
false
>;>;agent.start()
>;>;agent.isactive()
true
>;>;agent.stop()
>;>;agent.isactive()
false
GetServiceURL()
u'service:jmx:rmi://127.0.0.0.0.0.0.1:12345/jndi/rmi://127.0.0.0.1:12345/jmxrmi'
$ssh-l12345:127.0.0.0.1:12345服务器
$jconsolservice:jmx:rmi://127.0.0.0.0.0.1:12345/jmx:jmx:rmi://127.0.0.0.0.0.0.0.0.1:12345/jmxrmi/jmxrmi服务:jmx:jmx:jmx:127.0.0./>安全性
==
rmi注册表总是绑定到所有可能的网络设备。这不应该是问题,但我不能保证。
故障排除
==
jccjmx设置系统属性,除非它已经设置。您可以
强制使用正确的主机名,例如
-djava.rmi.server.hostname=127.0.0.1
ipv4与ipv6的比较
----
java更喜欢ipv6连接,通常绑定到
ipv6 tcp。如果您在混合网络上遇到问题,可以强制
jre使用
-djava.net.preferipv4stack=true
x
https://blogs.oracle.com/jmxetc/entry/jmx_connecting_through_firewalls_using
==authors
copyright
==
Copyright 2007 Sun Microsystems,Inc.保留所有权利。
JCC包装器,启动/停止功能:
版权所有(C)2012语义有限公司
/