Jython is great when you want a dynamically typed language based on the JVM.
Also comes really in handy when you want to write small monitoring scripts based on JMX.This is an examble on how to call a function from a MBean through Jython using JMX.
jmxaction.py
from javax.management.remote import JMXConnector from javax.management.remote import JMXConnectorFactory from javax.management.remote import JMXServiceURL from javax.management import MBeanServerConnection from javax.management import MBeanInfo from javax.management import ObjectName from java.lang import String from jarray import array import sys if __name__=='__main__': if len(sys.argv)> 5: serverUrl = sys.argv[1] username = sys.argv[2] password = sys.argv[3] beanName = sys.argv[4] action = sys.argv[5] else: sys.exit(-1) credentials = array([username,password],String) environment = {JMXConnector.CREDENTIALS:credentials} jmxServiceUrl = JMXServiceURL('service:jmx:rmi:///jndi/rmi://'+serverUrl+':9999/jmxrmi'); jmxConnector = JMXConnectorFactory.connect(jmxServiceUrl,environment); mBeanServerConnection = jmxConnector.getMBeanServerConnection() objectName = ObjectName(beanName); mBeanServerConnection.invoke(objectName,action,None,None) jmxConnector.close()
By calling the script
jython jmxaction.py {ip} {jmx user} {jmx password} {mbean name} {action}
You can invoke the action of the mbean specified.