📄 eventdjmx.java-nogo
字号:
//// This file is part of the OpenNMS(R) Application.//// OpenNMS(R) is Copyright (C) 2002-2003 The OpenNMS Group, Inc. All rights reserved.// OpenNMS(R) is a derivative work, containing both original code, included code and modified// code that was published under the GNU General Public License. Copyrights for modified // and included code are below.//// OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc.//// Copyright (C) 1999-2001 Oculan Corp. All rights reserved.//// This program is free software; you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation; either version 2 of the License, or// (at your option) any later version.//// This program is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details. //// You should have received a copy of the GNU General Public License// along with this program; if not, write to the Free Software// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.// // For more information contact: // OpenNMS Licensing <license@opennms.org>// http://www.opennms.org/// http://www.opennms.com///// Tab Size = 8//package org.opennms.netmgt.eventd.jmx;import java.lang.*;import java.lang.reflect.Method;import javax.management.DynamicMBean;import javax.management.MBeanInfo;import javax.management.AttributeList;import javax.management.Attribute;import javax.management.MBeanOperationInfo;import javax.management.AttributeNotFoundException;import javax.management.MBeanException;import javax.management.ReflectionException;import javax.management.InvalidAttributeValueException;import org.opennms.netmgt.eventd.Eventd;public class EventdJMX implements DynamicMBean{ public static final MethodOpertionInfo[] methods; private static class MethodOperationInfo { MBeanOperationInfo mbeanInfo; Method method; static MethodOperationInfo make(Method m, String descr) { MethodOperationInfo info = new MethodOperationInfo(); info.method = m; info.mbeanInfo = new MBeanOperation(descr, m); return info; } } static { Class edclass = Eventd.class; methods = new MBeanOperationInfo[] { MethodOperationInfo.make(edclass.getMethod("start", null), "Starts the Event Service"), MethodOperationInfo.make(edclass.getMethod("stop", null), "Stops the Event Service"), MethodOperationInfo.make(edclass.getMethod("getStatus", null), "Returns the status") }; } public EventdJMX() { // do nothing } public Object getAttribute(String attribute) throws AttributeNotFoundException, MBeanException, ReflectionException { if("status".equals(attribute)) { return invoke("getStatus", new Object[0], new String[0]); } throw new AttributeNotFoundException("The readable attribute \"" + attribute + "\" was not found"); } public void setAttribute(Attribute attribute) throws AttributeNotFoundException, InvalidAttributeValueException, MBeanException, ReflectionException { throw new AttributeNotFoundException("The writeable attribute \"" + attribute + "\" was not found"); } public AttributeList getAttributes(String[] attributes) { AttributeList list = new AttributeList(1); try { Object o = getAttribute("status"); list.add(new Attribute("status", o)); } catch(Exception e) { // discard, no ability to throw here } return list; } public AttributeList setAttributes(AttributeList attributes) { return new AttributeList(); } public Object invoke(String method, Object[] arguments, String[] parameters) throws MBeanException, ReflectionException { for(int i = 0; i < methods.length; i++) { if(methods[i].mbeanInfo.getName().equals(method)) { boolean match = false; MBeanParameterInfo[] info = methods[i].mbeanInfo.getSignature(); if((info == null || info.length == 0) && (parameters == null || parameters.length == 0) { match = true; } else if((info != null && parameters != null) && info.length == parameters.length) { // possible match, check argument types // match = true; for(int x = 0;match && x < info.length; x++) { if(!info[x].getType().equals(parameters[x])) match = false; } } if(match == true) { try { Eventd ed = Eventd.getInstance(); return methods[i].method.invoke(ed, arguments); } catch(Exception e) { throw new ReflectionException(e); } break; } } } throw new IntrospectionException("Method \"" + method + "\" not found"); } public MBeanInfo getMBeanInfo() { }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -