001 package com.khubla.pragmatach.framework.listener; 002 003 import java.lang.management.ManagementFactory; 004 005 import javax.management.MBeanServer; 006 import javax.management.ObjectName; 007 import javax.servlet.ServletContextEvent; 008 import javax.servlet.ServletContextListener; 009 010 import org.slf4j.Logger; 011 import org.slf4j.LoggerFactory; 012 013 import com.khubla.pragmatach.framework.jmx.PerformanceStatisticsMXBean; 014 import com.khubla.pragmatach.framework.jmx.RouteCacheStatusMXBean; 015 import com.khubla.pragmatach.framework.jmx.SystemStatusMXBean; 016 import com.khubla.pragmatach.framework.jmx.impl.RouteCacheStatus; 017 import com.khubla.pragmatach.framework.jmx.impl.SystemStatus; 018 import com.khubla.pragmatach.framework.servlet.PragmatachServlet; 019 020 /** 021 * @author tome 022 */ 023 public class JMXListener implements ServletContextListener { 024 /** 025 * logger 026 */ 027 private final Logger logger = LoggerFactory.getLogger(this.getClass()); 028 029 @Override 030 public void contextDestroyed(ServletContextEvent servletContextEvent) { 031 } 032 033 @Override 034 public void contextInitialized(ServletContextEvent servletContextEvent) { 035 try { 036 final MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer(); 037 /* 038 * system status bean 039 */ 040 final ObjectName systemStatusBeanName = new ObjectName("com.khubla.pragmatach.framework.jmx.impl:type=SystemStatus"); 041 final SystemStatusMXBean systemStatusMBean = new SystemStatus(); 042 if (mBeanServer.isRegistered(systemStatusBeanName)) { 043 mBeanServer.unregisterMBean(systemStatusBeanName); 044 } 045 mBeanServer.registerMBean(systemStatusMBean, systemStatusBeanName); 046 /* 047 * performance statistics 048 */ 049 final ObjectName performanceStatisticsBeanName = new ObjectName("com.khubla.pragmatach.framework.jmx.impl:type=PerformanceStatistics"); 050 final PerformanceStatisticsMXBean performanceStatisticsMXBean = PragmatachServlet.getPerformancestatistics(); 051 if (mBeanServer.isRegistered(performanceStatisticsBeanName)) { 052 mBeanServer.unregisterMBean(performanceStatisticsBeanName); 053 } 054 mBeanServer.registerMBean(performanceStatisticsMXBean, performanceStatisticsBeanName); 055 /* 056 * route cache 057 */ 058 final ObjectName routeCacheStatusBeanName = new ObjectName("com.khubla.pragmatach.framework.jmx.impl:type=RouteCacheStatus"); 059 final RouteCacheStatusMXBean routeCacheStatusMXBean = new RouteCacheStatus(); 060 if (mBeanServer.isRegistered(routeCacheStatusBeanName)) { 061 mBeanServer.unregisterMBean(routeCacheStatusBeanName); 062 } 063 mBeanServer.registerMBean(routeCacheStatusMXBean, routeCacheStatusBeanName); 064 } catch (final Exception e) { 065 logger.error("Exception in contextInitialized", e); 066 } 067 } 068 }