jccjmx

Java Management Extension (JMX) wrapper for JCC
Download

jccjmx Ranking & Summary

Advertisement

  • Rating:
  • License:
  • SPL
  • Price:
  • FREE
  • Publisher Name:
  • Christian Heimes
  • Publisher web site:
  • http://www.semantics.de

jccjmx Tags


jccjmx Description

jccjmx is a SSH-tunnel friendly monitoring of embedded Java Runtimes using MBeans, Java Management Extensions (JMX) and Remote Method Invocation (RMI) for Python and PyLucenet.Rationalejccjmx is a convenience helper for JCC and PyLucene to create a JMX RMI connector at runtime. The usual way to a connector with vmargs '-Dcom.sun.management.jmxremote' (or similar) works only on startup. Also this opens two ports (one for the connector and one for the RMI registry). The RMI registry port is assigned dynamically which makes firewall rules or SSH/SSL tunnels impossible.jccjmx allows you to start a RMI and JMX connector programmatically without restarting your Python application. The platform MBean server provides live monitoring of JRE's memory usage (heap, caches), JRE's CPU usage, Java threads, attached Python threads and more. The JDK is shipped with two GUI programs for monitoring: jconsole and jvisualvm.jccjmx is based on Daniel Fuchs' examples from his blog at Sun (now Oracle). I've modified his code and ported it from a premain agent to a standalone class.UsageThe import order is crucial! You must import and init lucene and jccjmx in the correct order. Otherwise your process will segfault.>>> import lucene>>> import jccjmxInitialize the VM for both packages. The second initVM() just adds the CLASSPATH of jccjmx.>>> lucene.initVM() # doctest: +ELLIPSIS< jcc.JCCEnv object at 0x... >>>> jccjmx.initVM() # doctest: +ELLIPSIS< jcc.JCCEnv object at 0x... >Create an agent that listens on port 12345. You should create just one instane of JccJmxAgent during the life time of your application.>>> agent = jccjmx.JccJmxAgent(12345)By default the agent is bound to 127.0.0.1. You can specificy another hostname or IP address with jccjmx.JccJmxAgent("hostname", portnumber).A RMI is created immediately and bound to "*:port" but no agent is listening yet. You have to activate is explicitly. This allows you to delay the agent.>>> agent.isActive()False>>> agent.start()>>> agent.isActive()True>>> agent.stop()>>> agent.isActive()FalseIn order to connect from a remote host you need to know the service URL:>>> agent.getServiceURL()u'service:jmx:rmi://127.0.0.1:12345/jndi/rmi://127.0.0.1:12345/jmxrmi'From a remote host: ssh -L12345:127.0.0.1:12345 server jconsole service:jmx:rmi://127.0.0.1:12345/jndi/rmi://127.0.0.1:12345/jmxrmiProduct's homepage


jccjmx Related Software