1.1 Overview
The JMXAgent embedded in tlisten supplies a list of JMX MBeans. Using the functions exported by those MBeans, users can monitor and manage Oracle Tuxedo application by JMX invocation. Following is an example of shutting down a Tuxedo Server by JMX Java client.
Shutting Down a Tuxedo Server by JMX Java Client
// Client.java
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import javax.management.MBeanServerConnection;
import javax.management.ObjectInstance;
import javax.management.ObjectName;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
import oracle.tuxedo.jmx.tux.exception.JMXPropertiesException;
import oracle.tuxedo.jmx.tux.utility.Encryption;
public class Client {
public static void main(String[] args) throws IOException, JMXPropertiesException, Exception {
String host = "XXXXXX.oracle.com";
String port = "26999";
String username = "oracle";
// Tuxedo password and application password must be encrypted.
String password = Encryption.getInstance().encrypt("password");
// Tuxedo application password.
String appPassword = Encryption.getInstance().encrypt("apppassword");
String[] credentials = new String[] { username, password, appPassword };
Map<String, Object> env = new HashMap<>();
env.put("jmx.remote.credentials", credentials);
// Create an RMI connector client and connect it to the RMI connector server.
JMXServiceURL url =
new JMXServiceURL(
String.format(
"service:jmx:rmi://%s:%s/jndi/rmi://%s:%s/server",
host,
port,
host,
port));
JMXConnector jmxc = JMXConnectorFactory.connect(url, env);
MBeanServerConnection mbsc = jmxc.getMBeanServerConnection(null);
// Get AdminBean by the MBean name.
Set<?> mbeans = mbsc.queryMBeans(new ObjectName("DefaultJMXDomain:type=adminBean"), null);
ObjectInstance objectInstance = (ObjectInstance) mbeans.iterator().next();
ObjectName objectName = objectInstance.getObjectName();
// The parameter value list for shutdownServer method.
Object[] params = { "/testarea/oracle/test/tuxconfig", "APPGRP", 102, 0, null };
// The parameter type list for shutdownServer method.
String[] signature = {
String.class.getName(),
String.class.getName(),
Integer.class.getName(),
Integer.class.getName(),
String.class.getName()
};
Object result = mbsc.invoke(objectName, "shutdownServer", params, signature);
System.out.print(result);
}
}Run the following command to compile the java file:
javac -classpath $TUXDIR/jmx/tmjmx_exceptions.jar:$TUXDIR/jmx/tmjmx_tux.jar Client.java
A Client.class is generated. Use the following command to run this client:
java -classpath $TUXDIR/jmx/tmjmx_exceptions.jar:$TUXDIR/jmx/tmjmx_tux.jar:. Client
The output result is as follows:
Shutting down server processes ...
Server Id = 102 Group Id = APPGRP Machine = SITE1: shutdown succeeded 1 process stopped.
For more information, see MBeans and JMX Operations.
Parent topic: Oracle Tuxedo JMX Interface