⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 agentdispatcher.java

📁 this is example use EJB with jboss.
💻 JAVA
字号:
/*
 * Copyright(C) 2008, NTT AT Co., Ltd.
 * Project: AWGView
 *
 * Notes:
 *  N/A
 *
 * Record of change:
 * Date         Version      Name       Content
 * 2009/01/10   1.0          TriNT      First create       
 */
package jp.co.ntt.awgview.server.thread;

import java.util.Vector;

import javax.jms.Message;

import jp.co.ntt.awgview.server.common.LogWriter;
import jp.co.ntt.awgview.server.common.Utils;
import jp.co.ntt.awgview.server.jms.JmsSnmpReplier;
import jp.co.ntt.awgview.server.vo.SnmpVO;

/**
 * Class name 	: AgentDispatcher <BR>
 * 
 * Package 		: jp.co.ntt_at.awgview.server.thread <BR>
 * 
 * Description	: This class provides a way of trapping SNMP command of all Requestor
 * and using JMS module send response<BR>
 * 
 * @author 		: AI&T
 * @version 	: 1.0
 */
public class AgentDispatcher{	
	/** List storage AgentProcess objects */
	private static Vector<AgentProcess> agentList = new Vector<AgentProcess>();
	
	/** Empty contructor*/
	public AgentDispatcher() {
		agentList = new Vector<AgentProcess>();		
	}

	/**
	 * Sets the AgentList Object
	 * 
	 * @param agents
	 */
	public void setAgentList(Vector<AgentProcess> agents) {
		agentList = agents;
	}
	
	/**
	 * Returns the AgentList Object
	 * @return Vector<AgentProcess>
	 */
	public Vector<AgentProcess> getAgentList() {
		return agentList;
	}
	
	/**
	 * Handle Snmp Command from Requestor
	 * 
	 * @param jmsSnmpReplier
	 * @param message
	 * @param snmpVO
	 */
	public void handleOnSnmpCommand(JmsSnmpReplier jmsSnmpReplier,
			Message message, SnmpVO snmpVO) {
		
		AgentProcess agentProcess = searchAgent(snmpVO.getAwgNeIP());
		
		if (agentProcess == null) {// No exist in agentList			
			agentProcess = new AgentProcess(snmpVO.getAwgNeIP(), jmsSnmpReplier);
			agentProcess.start();
			agentProcess.addData(jmsSnmpReplier, message, snmpVO);
			
			LogWriter.getSNMPLogger().debug("************************************************");
			LogWriter.getSNMPLogger().debug("Add agent into agentList with ip " + snmpVO.getAwgNeIP());
			
			agentList.add(agentProcess);
			LogWriter.getSNMPLogger().debug(printListToDebug());
			LogWriter.getSNMPLogger().debug("************************************************");
		} else { // Exist in agentList
			LogWriter.getSNMPLogger().debug("************************************************");
			LogWriter.getSNMPLogger().debug("Agent is existing in agentList with ip " + agentProcess.getIPAddress());	
			LogWriter.getSNMPLogger().debug("Add command into queue");	
			agentProcess.addData(jmsSnmpReplier, message, snmpVO);
			LogWriter.getSNMPLogger().debug(printListToDebug());
			LogWriter.getSNMPLogger().debug("************************************************");
		}
	}
	
	/**
	 * Search Agent in Agent List
	 * 
	 * @param ipAddress
	 * @return AgentProcess
	 */
	private AgentProcess searchAgent(String ipAddress) {
		try {
			if (agentList.isEmpty()){
				return null;
			}			
			int len = agentList.size();
			for (int i = 0; i < len; i++) {
				AgentProcess tempAgentProcess = agentList.get(i);
				if ((tempAgentProcess != null)
						&& (tempAgentProcess.getIPAddress().equals(ipAddress))) {
					return tempAgentProcess;
				}
			}
		} catch (Exception e) {
			LogWriter.getSNMPLogger().error(e.toString());
			if (LogWriter.getSNMPLogger().isTraceEnabled()) {
				LogWriter.getSNMPLogger().trace(Utils.parseException(e));
			}
			LogWriter.getSNMPLogger().error("Error when search agent. Cannot search agent in agent list");
		}
		return null;
	}

	/***
	 * Stop all JMS Queue of Application
	 * 
	 * @throws Exception
	 */
	public void destroy() throws Exception {
		try{			
			if (agentList == null) {
				return;
			}
			
			int len = agentList.size();
			for (int i = 0; i < len; i++) {
				AgentProcess agentProcess = agentList.get(i);
				if (agentProcess != null) {
					agentProcess.destroy();					
				}
			}
			System.gc();
		}catch (Exception e){
			LogWriter.getSNMPLogger().error(e.toString());
			if (LogWriter.getSNMPLogger().isTraceEnabled()) {
				LogWriter.getSNMPLogger().trace(Utils.parseException(e));
			}
		}
	}
	
	/**
	 * Print element list to debug 
	 * @return String
	 */
	public static String printListToDebug(){
		try{
			String list = "\nCurrent requested Agents: " + agentList.size();
			int len = agentList.size();
			for (int i= 0; i < len; i++){
				list = list + "\t\n Agent[" + i + "] = " + agentList.get(i).getIPAddress() 
				+ " >> Command size = " + agentList.get(i).size();
			}
			return list;
		}catch (Exception e){
			return "";
		}
	}
}

⌨️ 快捷键说明

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