JMXAdministrationTest.java
上传用户:xfwatch
上传日期:2020-12-14
资源大小:872k
文件大小:4k
源码类别:

中间件编程

开发平台:

Java

  1. package org.jboss.blacktie.examples.jmx;
  2. import java.io.BufferedReader;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;
  5. import java.util.ArrayList;
  6. import java.util.Iterator;
  7. import java.util.List;
  8. import java.util.Properties;
  9. import javax.management.InstanceNotFoundException;
  10. import javax.management.MBeanException;
  11. import javax.management.MBeanServerConnection;
  12. import javax.management.MalformedObjectNameException;
  13. import javax.management.ObjectName;
  14. import javax.management.ReflectionException;
  15. import javax.management.remote.JMXConnector;
  16. import javax.management.remote.JMXConnectorFactory;
  17. import javax.management.remote.JMXServiceURL;
  18. import junit.framework.TestCase;
  19. import org.jboss.blacktie.jatmibroker.core.conf.ConfigurationException;
  20. import org.jboss.blacktie.jatmibroker.core.conf.XMLEnvHandler;
  21. import org.jboss.blacktie.jatmibroker.core.conf.XMLParser;
  22. /**
  23.  * As this is an interactive test, the forkMode must be set to none is vital for
  24.  * the input to be received by maven
  25.  */
  26. public class JMXAdministrationTest extends TestCase {
  27. private InputStreamReader isr = new InputStreamReader(System.in);
  28. private BufferedReader br = new BufferedReader(isr);
  29. public void test() throws IOException, ConfigurationException,
  30. MalformedObjectNameException, NullPointerException,
  31. InstanceNotFoundException, MBeanException, ReflectionException {
  32. String url = "service:jmx:rmi:///jndi/rmi://localhost:1090/jmxconnector";
  33. System.out.println("usage: mvn test");
  34. System.out
  35. .println("warning: forkMode must be set to none, please see README");
  36. prompt("Start JBoss Application Server, the following url must be available ""
  37. + url + """);
  38. JMXServiceURL u = new JMXServiceURL(url);
  39. JMXConnector c = JMXConnectorFactory.connect(u);
  40. MBeanServerConnection beanServerConnection = c
  41. .getMBeanServerConnection();
  42. ObjectName blacktieAdmin = new ObjectName(
  43. "jboss.blacktie:service=Admin");
  44. prompt("Start an XATMI server");
  45. List<String> listRunningServers = (ArrayList<String>) beanServerConnection
  46. .invoke(blacktieAdmin, "listRunningServers", null, null);
  47. output("listRunningServers", listRunningServers);
  48. if (!listRunningServers.isEmpty()) {
  49. String response = prompt("Enter the id of a server to get the instance numbers of");
  50. int index = Integer.parseInt(response);
  51. List<Integer> ids = (List<Integer>) beanServerConnection.invoke(
  52. blacktieAdmin, "listRunningInstanceIds",
  53. new Object[] { listRunningServers.get(index) },
  54. new String[] { "java.lang.String" });
  55. output("listRunningInstanceIds", ids);
  56. prompt("Start a second instance of the same server");
  57. ids = (List<Integer>) beanServerConnection.invoke(blacktieAdmin,
  58. "listRunningInstanceIds", new Object[] { listRunningServers
  59. .get(index) }, new String[] { "java.lang.String" });
  60. output("listRunningInstanceIds", ids);
  61. response = prompt("Enter the instance id of the server you wish to shutdown");
  62. int id = Integer.parseInt(response);
  63. beanServerConnection.invoke(blacktieAdmin, "shutdown",
  64. new Object[] { listRunningServers.get(index), id },
  65. new String[] { "java.lang.String", "int" });
  66. } else {
  67. System.err.println("ERROR: There were no running servers detected");
  68. throw new RuntimeException(
  69. "ERROR: There were no running servers detected");
  70. }
  71. }
  72. private String prompt(String prompt) throws IOException {
  73. System.out.println("Please press return after you: " + prompt + "...");
  74. return br.readLine().trim();
  75. }
  76. private void output(String operationName, List list) {
  77. System.out.println("Output from: " + operationName);
  78. int i = 0;
  79. Iterator iterator = list.iterator();
  80. while (iterator.hasNext()) {
  81. System.out.println("Element: " + i + " Value: " + iterator.next());
  82. i++;
  83. }
  84. }
  85. }