xmlrpcnotifier.java

来自「opennms得相关源码 请大家看看」· Java 代码 · 共 499 行 · 第 1/2 页

JAVA
499
字号
//// 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.//// Modifications://// 2004 Jan 13: Added this new code for the XML RPC Daemon//// Original code base 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.xmlrpcd;import java.io.IOException;import java.net.MalformedURLException;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.Vector;import org.apache.log4j.Category;import org.apache.xmlrpc.XmlRpcClient;import org.apache.xmlrpc.XmlRpcException;import org.opennms.core.utils.ThreadCategory;import org.opennms.netmgt.EventConstants;import org.opennms.netmgt.config.DatabaseConnectionFactory;import org.opennms.netmgt.config.xmlrpcd.XmlrpcServer;import org.opennms.netmgt.outage.OutageConstants;import org.opennms.netmgt.xml.event.Event;/** * <p> * This class create an XMLRPC client and provide methods to notify the external * XMLRPC server if a failure occurs during processing an event. *  * @author <A HREF="mailto:jamesz@opennms.com">James Zuo </A> * @author <A HREF="http://www.opennms.org">OpenNMS.org </A> */public final class XmlRpcNotifier {    /**     * The external xmlrpc server procedure to process an event success.     */    private static final String XMLRPC_SERVER_SUCCESS_COMMAND = "notifySuccess";    /**     * The external xmlrpc server procedure to process an event failure.     */    private static final String XMLRPC_SERVER_FAILURE_COMMAND = "notifyFailure";    /**     * The external xmlrpc server procedure to listen to the receiving event     * notice.     */    private static final String XMLRPC_SERVER_RECEIVE_EVENT_COMMAND = "notifyReceivedEvent";    /**     * The external xmlrpc server procedure to process a nodeRegainedService     * event.     */    private static final String XMLRPC_SERVICE_UP_COMMAND = "sendServiceUpEvent";    /**     * The external xmlrpc server procedure to process a nodeLostService event.     */    private static final String XMLRPC_SERVICE_DOWN_COMMAND = "sendServiceDownEvent";    /**     * The external xmlrpc server procedure to process a nodeUp event.     */    private static final String XMLRPC_NODE_UP_COMMAND = "sendNodeUpEvent";    /**     * The external xmlrpc server procedure to process a nodeDown event.     */    private static final String XMLRPC_NODE_DOWN_COMMAND = "sendNodeDownEvent";    /**     * The external xmlrpc server procedure to process an interfaceUp event.     */    private static final String XMLRPC_INTERFACE_UP_COMMAND = "sendInterfaceUpEvent";    /**     * The external xmlrpc server procedure to process an interfaceDown event.     */    private static final String XMLRPC_INTERFACE_DOWN_COMMAND = "sendInterfaceDownEvent";    /**     * The external xmlrpc servers.     */    private XmlrpcServer[] m_rpcServers;    /**     * The retry number to setup xmlrpc communication.     */    private int m_retries;    /**     * The elapse-time between retries.     */    private int m_elapseTime;    /**     * The working xmlrpc client.     */    private XmlRpcClient m_xmlrpcClient;    /**     * A boolean flag configurated to indicate to how to set the NMS server     * Name: From user opennms server configuration or simply take from     * InetAddress.getLocalHost().     */    private boolean m_verifyServer;    /**     * The host NMS server name     */    private String m_localServer;    /**     * The constructor     */    public XmlRpcNotifier(XmlrpcServer[] rpcServers, int retries, int elapseTime, boolean verifyServer, String localServer) {        m_rpcServers = rpcServers;        m_retries = retries;        m_elapseTime = elapseTime;        createConnection();        m_verifyServer = verifyServer;        if (m_verifyServer)            m_localServer = localServer;    }    /**     * <p>     * Notify the external xmlrpc server the success of processing an event.     *      * @param txNo     *            the external transaction number for an event.     * @param uei     *            the event uei.     * @param message     *            the text message to indicate the success.     *      */    public boolean notifySuccess(long txNo, String uei, String message) {        // Create the request parameters list        Vector params = new Vector();        params.addElement(new String((new Long(txNo)).toString()));        params.addElement(new String(uei));        params.addElement(new String(message));        return sendXmlrpcRequest(XMLRPC_SERVER_SUCCESS_COMMAND, params);    }    /**     * <p>     * Notify the external xmlrpc server the occurance of failure during     * processing an event.     *      * @param txNo     *            the external transaction number for an event.     * @param uei     *            the event uei.     * @param reason     *            the text message to explain the reason of the failure to the     *            external xmlrpc server.     */    public boolean notifyFailure(long txNo, String uei, String reason) {        // Create the request parameters list        Vector params = new Vector();        params.addElement(new String((new Long(txNo)).toString()));        params.addElement(new String(uei));        params.addElement(new String(reason));        return sendXmlrpcRequest(XMLRPC_SERVER_FAILURE_COMMAND, params);    }    /**     * <p>     * Notify the external xmlrpc server the request has been received.     *      * @param txNo     *            the external transaction number for an event.     * @param uei     *            the event uei.     * @param message     *            text message to notify the external xmlrpc server.     */    public boolean notifyReceivedEvent(long txNo, String uei, String message) {        // Create the request parameters list        Vector params = new Vector();        params.addElement(new String((new Long(txNo)).toString()));        params.addElement(new String(uei));        params.addElement(new String(message));        return sendXmlrpcRequest(XMLRPC_SERVER_RECEIVE_EVENT_COMMAND, params);    }    /**     * <p>     * Notify the external xmlrpc server the occurance of the 'nodeLostService'     * event.     */    public boolean sendServiceDownEvent(Event event) {        // Create the request parameters list        Vector params = new Vector();        params.addElement(new String(getNodeLabel(event.getNodeid())));        params.addElement(new String(event.getInterface()));        params.addElement(new String(event.getService()));        params.addElement(new String("Not Available"));        if (m_verifyServer)            params.addElement(new String(m_localServer));        else            params.addElement(new String(event.getHost()));        params.addElement(new String(event.getTime()));        return sendXmlrpcRequest(XMLRPC_SERVICE_DOWN_COMMAND, params);    }    /**     * <p>     * Notify the external xmlrpc server the occurance of the     * 'nodeRegainedService' event.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?