public void destroyPlugin() { Log.info("[" + NAME + "] destroy " + NAME + " plugin resources"); if (database != null) { database.stop(); JmxHelper.unregister(OBJECTNAME_DATABASEPOOL); } if (client != null) { client.stop(); JmxHelper.unregister(OBJECTNAME_CORE_CLIENT_THREADPOOL); } if (packetCounter != null) { packetCounter.stop(); JmxHelper.unregister(OBJECTNAME_PACKET_COUNTER); } if (openfire != null) { openfire.stop(); JmxHelper.unregister(OBJECTNAME_OPENFIRE); } if (emailScheduler != null) { emailScheduler.stopMonitoring(); } Log.info("[" + NAME + "] plugin fully destroyed."); }
public void initializePlugin(PluginManager manager, File pluginDirectory) { Log.info("[" + NAME + "] initialize " + NAME + " plugin resources"); try { openfire = new Openfire(); openfire.start(); JmxHelper.register(openfire, OBJECTNAME_OPENFIRE); Log.info("[" + NAME + "] .. started openfire server detector."); } catch (Exception e) { Log.debug("cannot start openfire server detector: " + e.getMessage(), e); } try { packetCounter = new PacketCounter(); packetCounter.start(); JmxHelper.register(packetCounter, OBJECTNAME_PACKET_COUNTER); Log.info("[" + NAME + "] .. started stanza counter."); } catch (Exception e) { Log.debug("cannot start stanza counter: " + e.getMessage(), e); } try { client = new CoreThreadPool( ((ConnectionManagerImpl) XMPPServer.getInstance().getConnectionManager()) .getSocketAcceptor()); client.start(); JmxHelper.register(client, OBJECTNAME_CORE_CLIENT_THREADPOOL); Log.info("[" + NAME + "] .. started client thread pool monitor."); } catch (Exception e) { Log.debug("cannot start client thread pool monitor: " + e.getMessage(), e); } try { database = new DatabasePool(); database.start(); JmxHelper.register(database, OBJECTNAME_DATABASEPOOL); Log.info("[" + NAME + "] .. started database pool monitor."); } catch (Exception e) { Log.debug("cannot start database pool monitor: " + e.getMessage(), e); } try { ContextHandlerCollection contexts = HttpBindManager.getInstance().getContexts(); try { Log.info("[" + NAME + "] starting jolokia"); WebAppContext context = new WebAppContext(contexts, pluginDirectory.getPath(), "/jolokia"); final List<ContainerInitializer> initializers = new ArrayList<>(); initializers.add(new ContainerInitializer(new JasperInitializer(), null)); context.setAttribute("org.eclipse.jetty.containerInitializers", initializers); context.setAttribute(InstanceManager.class.getName(), new SimpleInstanceManager()); context.setWelcomeFiles(new String[] {"index.html"}); Log.info("[" + NAME + "] starting hawtio"); WebAppContext context2 = new WebAppContext(contexts, pluginDirectory.getPath() + "/hawtio", "/hawtio"); final List<ContainerInitializer> initializers2 = new ArrayList<>(); initializers2.add(new ContainerInitializer(new JasperInitializer(), null)); context2.setAttribute("org.eclipse.jetty.containerInitializers", initializers2); context2.setAttribute(InstanceManager.class.getName(), new SimpleInstanceManager()); context2.setWelcomeFiles(new String[] {"index.html"}); if (JiveGlobals.getBooleanProperty("xmpp.jmx.secure", true)) { SecurityHandler securityHandler = basicAuth("jmxweb"); if (securityHandler != null) context.setSecurityHandler(securityHandler); SecurityHandler securityHandler2 = basicAuth("jmxweb"); if (securityHandler2 != null) context2.setSecurityHandler(securityHandler2); } } catch (Exception e) { Log.error("An error has occurred", e); } } catch (Exception e) { Log.error("Error initializing JmxWeb Plugin", e); } if (JiveGlobals.getBooleanProperty("jmxweb.email.monitoring", true)) { Log.info("[" + NAME + "] starting email monitoring"); emailScheduler = new EmailScheduler(); emailScheduler.startMonitoring(); Log.info("[" + NAME + "] started monitoring"); } }