private void handleJMXPage(final HttpServletRequest req, final HttpServletResponse resp, final Session session) throws IOException { final Page page = newPage(req, resp, session, "azkaban/webapp/servlet/velocity/jmxpage.vm"); page.add("mbeans", this.server.getMbeanNames()); final Map<String, Object> executorMBeans = new HashMap<>(); for (final String hostPort : this.executorManagerAdapter.getAllActiveExecutorServerHosts()) { try { final Map<String, Object> mbeans = this.executorManagerAdapter.callExecutorJMX(hostPort, JMX_GET_MBEANS, null); executorMBeans.put(hostPort, mbeans.get("mbeans")); } catch (final IOException e) { logger.error("Cannot contact executor " + hostPort, e); } } page.add("executorRemoteMBeans", executorMBeans); final Map<String, Object> triggerserverMBeans = new HashMap<>(); triggerserverMBeans.put(this.triggerManager.getJMX().getPrimaryServerHost(), this.triggerManager.getJMX().getAllJMXMbeans()); page.add("triggerserverRemoteMBeans", triggerserverMBeans); page.render(); }