package org.infosec.ismp.manager.snmpTrap;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.ObjectMessage;
import org.infosec.ismp.manager.rmi.event.modle.TrapEvent;
import org.infosec.ismp.manager.rmi.event.modle.TrapEventWrapper;
import org.infosec.ismp.manager.server.event.EventTrapReceive;
import org.infosec.ismp.util.ThreadCategory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class SnmpTrapMessageListener implements MessageListener {
private EventTrapReceive trapReceiver;
private SnmpTrapLocator m_trapLocator;
@Override
public void onMessage(Message message) {
ObjectMessage om = (ObjectMessage)message;
try {
TrapEventWrapper wrapper = (TrapEventWrapper)om.getObject();
// System.out.println("this is snmpTrapMessageListener class");
// System.out.println("trapEvent.getMaxSizeResponsePDU is :"+trapEvent.getMaxSizeResponsePDU());
// System.out.println("trapEvent.getMessageProcessingModel is :"+trapEvent.getMessageProcessingModel());
// System.out.println("trapEvent.getSecurityLevel is :"+trapEvent.getSecurityLevel());
// System.out.println("trapEvent.getSecurityModel is :"+trapEvent.getSecurityModel());
// System.out.println("trapEvent.getPeerAddress is :"+trapEvent.getPeerAddress());
// System.out.println("trapEvent.getPdu is :"+trapEvent.getPdu());
// System.out.println("trapEvent.getSecurityName is :"+trapEvent.getSecurityName());
// System.out.println("trapEvent.getTransportMapping is :"+trapEvent.getTransportMapping());
TrapEvent event = wrapper.getEvent();
String nodeid = wrapper.getNodeId();
String fromIp = wrapper.getIp();
String domain = m_trapLocator.getDomainByNodeId(nodeid);
if(domain==null){
log().info("该trap事件对应的domain不存在,抛弃,该nodeid是:"+nodeid);
}else{
trapReceiver.trapAnalytic(event, domain, nodeid, fromIp);
}
} catch (JMSException e) {
e.printStackTrace();
}catch(Throwable t){
log().warn("解析消息出现异常",t);
}
}
@Autowired(required=true)
public void setTrapReceiver(EventTrapReceive trapReceiver) {
this.trapReceiver = trapReceiver;
}
@Autowired(required=true)
public void setTrapLocator(SnmpTrapLocator trapLocator) {
m_trapLocator = trapLocator;
}
ThreadCategory log() {
return ThreadCategory.getInstance(getClass());
}
}