package org.infosec.ismp.manager.agent; import java.util.List; import java.util.Timer; import java.util.TimerTask; import org.infosec.ismp.daemon.AbstractServiceDaemon; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.util.Assert; @Component(value="agentChecker") public class AgentChecker extends AbstractServiceDaemon{ private AgentLocator m_agentLocator; private Timer m_timer; // private Map<String,RegisterAgent> m_agentMaps = new // HashMap<String,RegisterAgent>(); public AgentChecker() { super("ISMP.AgentChecker"); } // public List<AgentComponent> getAllActiveAgents() { // // TODO Auto-generated method stub // return null; // } @Override protected void onInit() { Assert.state(m_agentLocator!=null,"m_agentLocator没有设置,请检查"); } @Override protected void onStart() { try { AgentRegisterEventProcessor processor = new AgentRegisterEventProcessor( m_agentLocator); log().debug("成功注册Agent注册事件处理器"); } catch (Throwable t) { log().warn("没有注册成功Agent注册事件处理器 ", t); } } private void startTimer() { if (m_timer != null) { log().debug( "startTimer() called,but previous timer exists;making sure it's cleaned up "); m_timer.cancel(); } log().debug("scheduling new register timer"); m_timer = new Timer("ISMP.AgentChecker", false); TimerTask task = new TimerTask() { @Override public void run() { checkAgent(); } }; //FIXME: 移到配置文件中 m_timer.scheduleAtFixedRate(task, 10, 10 * 1000); } private void checkAgent() { log().debug("开始检查当前Agent的在线状态情况"); m_agentLocator.check(); } @Autowired(required=true) public void setAgentLocator(AgentLocator agentLocator) { m_agentLocator = agentLocator; } }