ObjectName addLoggerMBean(Logger logger) { String name = logger.getName(); ObjectName objectName = null; try { LoggerDynamicMBean loggerMBean = new LoggerDynamicMBean(logger); objectName = new ObjectName("log4j", "logger", name); if (!server.isRegistered(objectName)) { registerMBean(loggerMBean, objectName); NotificationFilterSupport nfs = new NotificationFilterSupport(); nfs.enableType(ADD_APPENDER + logger.getName()); log.debug("---Adding logger [" + name + "] as listener."); nbs.addNotificationListener(loggerMBean, nfs, null); vAttributes.add(new MBeanAttributeInfo("logger=" + name, "javax.management.ObjectName", "The " + name + " logger.", true, true, // this makes the object // clickable false)); } } catch(JMException e) { log.error("Could not add loggerMBean for ["+name+"].", e); } catch(RuntimeException e) { log.error("Could not add loggerMBean for ["+name+"].", e); } return objectName; }
private void init() { MyListener listener = new MyListener(); NotificationFilterSupport filter = null; try { // get reference to MBean server Context ic = new InitialContext(); MBeanServerConnection server = (MBeanServerConnection) ic.lookup("jmx/invoker/RMIAdaptor"); // get reference to CacheMgmtInterceptor MBean String cacheName = "rhq.cache:subsystem=alerts,service=cache"; ObjectName mgmt_name = new ObjectName(cacheName); // configure a filter to only receive node created and removed events filter = new NotificationFilterSupport(); filter.disableAllTypes(); filter.enableType(CacheMgmtInterceptor.NOTIF_NODE_CREATED); filter.enableType(CacheMgmtInterceptor.NOTIF_NODE_REMOVED); filter.enableType(CacheMgmtInterceptor.NOTIF_NODE_MODIFIED); // register the listener with a filter // leave the filter null to receive all cache events server.addNotificationListener(mgmt_name, listener, filter, null); } catch (Exception e) { e.printStackTrace(); } }
MyNotificationFilter() { super.enableType(JBOSS_TYPE_STOP); } }
/** * */ private DBEventStore(AlertPersistenceConfiguration aAlertPersistenceConfiguration , MBeanServerConnection aMBeanServer,PlatformContext aPlatformContext) { super(); mMBeanServer = aMBeanServer; mPlatformContext = aPlatformContext; mAlertPersistenceConfiguration = aAlertPersistenceConfiguration; mJndiName = aAlertPersistenceConfiguration.getDataSourceJndiName(); mTimerFilter = new NotificationFilterSupport(); if(mPlatformContext.isAdminServer()) { registerPolicyExecutionTimer(); } mShutdownInProgress = false; }
protected void onSerialize(SerializationContext context, NotificationFilterSupport filter) throws IOException { Vector types = filter.getEnabledTypes(); for (Iterator i = types.iterator(); i.hasNext();) { String type = (String)i.next(); context.serialize(NOTIFICATION_TYPE_QNAME, null, type); } }
MyNotificationFilter() { super.enableType(JBOSS_TYPE_STOP); } }
mContext = context; mCurrentTargetStateMap = new HashMap<String,EventManagementTargetStateInfo>(); mTargetCheckTimerFilter = new NotificationFilterSupport();
private String[] getTypes( final NotificationFilter filter) { String[] types = NO_TYPES; if (filter instanceof NotificationFilterSupport) { final NotificationFilterSupport fs = (NotificationFilterSupport) filter; types = ListUtil.toStringArray(fs.getEnabledTypes()); } else if (filter instanceof AttributeChangeNotificationFilter) { types = ATTRIBUTE_CHANGE_TYPES; } else if (filter instanceof MBeanServerNotificationFilter) { types = MBEAN_SERVER_NOTIFICATION_TYPES; } else { // no filter, or non-standard one, have to assume all types types = ALL_TYPES; } return types; }
NotificationFilterSupport filter = new NotificationFilterSupport(); filter.enableType(eventType); this.addNotificationListener(JmxEventListener.getListener(), filter, listener);
protected void onSetChildValue(Object value, Object hint) throws SAXException { if (NotificationFilterSupportSer.NOTIFICATION_TYPE.equals(hint)) filter.enableType((String)value); }
private String[] getTypes( final NotificationFilter filter) { String[] types; if (filter instanceof NotificationFilterSupport) { final NotificationFilterSupport fs = (NotificationFilterSupport) filter; types = ListUtil.toStringArray(fs.getEnabledTypes()); } else if (filter instanceof AttributeChangeNotificationFilter) { types = ATTRIBUTE_CHANGE_TYPES; } else if (filter instanceof MBeanServerNotificationFilter) { types = MBEAN_SERVER_NOTIFICATION_TYPES; } else { // no filter, or non-standard one, have to assume all types types = ALL_TYPES; } return types; }
/** * Sets up event listeners for this MBean as described in the descriptor. * The descriptor contains a map with layout {item -> Map[event:"...", from:ObjectName, callback:&Closure],...,} * * @param server the MBeanServer is to be registered. * @param descriptor a map containing info about the event */ public void addEventListeners(MBeanServer server, Map<String, Map<String, Object>> descriptor) { for (Map.Entry<String, Map<String, Object>> item : descriptor.entrySet()) { Map<String, Object> listener = item.getValue(); // register with server ObjectName broadcaster = (ObjectName) listener.get("from"); try { String eventType = (String) listener.get("event"); if (eventType != null) { NotificationFilterSupport filter = new NotificationFilterSupport(); filter.enableType(eventType); server.addNotificationListener(broadcaster, JmxEventListener.getListener(), filter, listener); } else { server.addNotificationListener(broadcaster, JmxEventListener.getListener(), null, listener); } } catch (InstanceNotFoundException e) { throw new JmxBuilderException(e); } } }
private void hookUpToTimerService(Long aTimeIntervalForTargetCheck){ try { mTargetCheckTimerFilter.enableType(EVENT_TARGETCHECK_FILTER_TYPE); mMBeanServer.addNotificationListener(mTargetCheckTimerObjectName, this, mTargetCheckTimerFilter, null); // setup the parameters for the timer addNotification method Object[] paramsArray = {EVENT_TARGETCHECK_FILTER_TYPE, "instance check interval", null, new Date(), aTimeIntervalForTargetCheck}; String[] paramsSig = {"java.lang.String", "java.lang.String", "java.lang.Object", "java.util.Date", "long"}; mTimerNotificationId =(Integer) mMBeanServer.invoke(mTargetCheckTimerObjectName, "addNotification", paramsArray, paramsSig); } catch (Exception ex) { String bundleKey = "caps.management.server.alert.instance.check.timer.hook.error.msg"; String message = AlertUtil.constructLogMessage(bundleKey); mLogger.log(Level.WARNING,message, ex); } }
private JSONArray filterToJSON(NotificationFilterSupport pFilter) { JSONArray ret = new JSONArray(); for (String f : pFilter.getEnabledTypes()) { ret.add(f); } return ret; } }
ObjectName addLoggerMBean(Logger logger) { String name = logger.getName(); ObjectName objectName = null; try { LoggerDynamicMBean loggerMBean = new LoggerDynamicMBean(logger); objectName = new ObjectName("log4j", "logger", name); if (!server.isRegistered(objectName)) { registerMBean(loggerMBean, objectName); NotificationFilterSupport nfs = new NotificationFilterSupport(); nfs.enableType(ADD_APPENDER + logger.getName()); log.debug("---Adding logger [" + name + "] as listener."); nbs.addNotificationListener(loggerMBean, nfs, null); vAttributes.add(new MBeanAttributeInfo("logger=" + name, "javax.management.ObjectName", "The " + name + " logger.", true, true, // this makes the object // clickable false)); } } catch(JMException e) { log.error("Could not add loggerMBean for ["+name+"].", e); } catch(RuntimeException e) { log.error("Could not add loggerMBean for ["+name+"].", e); } return objectName; }
private void hookUpToTimerService(Long aTimeIntervalForArchive){ try { mTimerFilter.enableType(EVENT_POLICY_FILTER_TYPE); mMBeanServer.addNotificationListener(mTimerObjectName, this, mTimerFilter, null); // setup the parameters for the timer addNotification method Object[] paramsArray = {EVENT_POLICY_FILTER_TYPE, "alerts removal interval", null, new Date(), aTimeIntervalForArchive}; String[] paramsSig = {"java.lang.String", "java.lang.String", "java.lang.Object", "java.util.Date", "long"}; mTimerNotificationId =(Integer) mMBeanServer.invoke(mTimerObjectName, "addNotification", paramsArray, paramsSig); } catch (Exception ex) { String bundleKey = "caps.management.server.alert.runtime.timer.hook.error.msg"; String message = AlertUtil.constructLogMessage(bundleKey); mLogger.log(Level.WARNING,message, ex); } }
/** * Matches any of the given notification types. * @see {@link NotificationFilterSupport#enableType(String)} */ public static NotificationFilter matchesTypes(String... types) { NotificationFilterSupport result = new NotificationFilterSupport(); for (String type : types) { result.enableType(type); } return result; }
/** * Matches any of the given notification types. * @see {@link NotificationFilterSupport#enableType(String)} */ public static NotificationFilter matchesTypes(String... types) { NotificationFilterSupport result = new NotificationFilterSupport(); for (String type : types) { result.enableType(type); } return result; }
private NotificationFilterSupport createFilter(List<String> pFilters) { if (pFilters != null) { NotificationFilterSupport filterSupport = new NotificationFilterSupport(); for (String f : pFilters) { filterSupport.enableType(f); } return filterSupport; } else { return null; } }
/** * Initialises myself **/ private void init() { // just pickup a unique object this.myHandback = new Integer(Integer.MAX_VALUE); // allow only registration events this.myFilter = new NotificationFilterSupport(); this.myFilter.enableType(MBeanServerNotification.REGISTRATION_NOTIFICATION); }