[SNMP4J] Need help with Weblogic message trap Manager

Frank Fock fock at agentpp.com
Thu Dec 22 21:51:22 CET 2005


Hi Rabun,

Just replace "transport.listen()" by "snmp.listen()" and it should work
much better.

Best regards,
Frank

Rabun Jones wrote:

>I have weblogic configured to send a log filter snmp v1 trap message to
>port 162. The same server listens for responses from the manager on port
>161. Everything seems to be set up correctly but (being new to the whole
>snmp thing) I can't seem to write a manager that will receive the
>message and parse it. I am using the snmpRequest.java example from the
>api, but I am not having any luck. I would greatly appreciate any help
>that could be given. What I am tying to do is to receive a trap based
>off of a thread stuck message in weblogic and use my snmp manager to
>send sms messages to server managers. The sms part I can handle, but my
>manger isn't working properly. Extra info (The weblogic server is
>running on the same box as the manager, the version is 8.1, and I can
>readily create the stuck thread problem so the trap should be called).
> 
> 
> 
>Here is all of the code I have tried so far. It is probably a mess
>because I don't know which parts I need and those I don't
> 
>private class SNMPClient implements CommandResponder, PDUFactory
>,Runnable
>    {
> 
>        //SNMP VARS//
>        private Address listenAddress = null;
>        private Address targetAddress = null;
>        private Target target = null;
>        private OctetString community = new OctetString("public");;
>        private Vector vbs = new Vector();
>        private PDUv1 v1TrapPDU = new PDUv1();
> 
>        private int pduType = PDU.V1TRAP;
>        private int numDispatcherThreads = 2;
> 
>        public SNMPClient()
>        {
>             //Constuctor
>             //Counter listener to return proper USM and MP error
>counters
>             CounterSupport.getInstance().addCounterListener(new
>DefaultCounterListener());
> 
>             try
>             {
>                vbs.add(new VariableBinding(new OID("1.3.6")));
>                listenAddress = new
>UdpAddress(InetAddress.getLocalHost(),162); //UDP Listener on Default
>Port
>                targetAddress = new
>UdpAddress(InetAddress.getLocalHost(),161); //UDP sender on Default Port
>             }
>             catch(Exception e)
>             {
>                 e.printStackTrace();
>             }
>        }
> 
>        public void run()
>        {
>            //Required by Runnable when spawning a new thread
> 
>            try
>            {
>                //Fire up listener
>                SNMPClient client = new SNMPClient();
>                //Init Log4j Logging
>                LogFactory.setLogFactory(new Log4jLogFactory());
>                BER.setCheckSequenceLength(false);
>                //Set to listen
>                client.listen();
>            }
>            catch(Exception e)
>            {
>                e.printStackTrace();
>            }
>        }
> 
>        public synchronized void processPdu(CommandResponderEvent event)
>        {
>            System.out.println("ProcessPdu Called");
>            //This is for Listening for SNMP notifications of stuck
>threads
> 
>             //A PDU represents an SNMP protocol data unit
>             PDU command = event.getPDU();
> 
>             if(command!=null)
>             {
>                 System.out.println("PDU command = " +
>command.toArray());
> 
>                 //Check for TRAP command
>                 if(command.getType() != PDU.TRAP && command.getType()
>!= PDU.V1TRAP)
>                 {
>                    System.out.println("Received PDU is of Unrecognized
>type");
> 
>                    command.setErrorIndex(0);
>                    command.setErrorStatus(0);
>                    command.setType(PDU.RESPONSE);
>                    StatusInformation statusInformation = new
>StatusInformation();
>                    StateReference ref = event.getStateReference();
>                    try
>                    {
> 
>event.getMessageDispatcher().returnResponsePdu(event.getMessageProcessin
>gModel(),
> 
>event.getSecurityModel(),event.getSecurityName(),event.getSecurityLevel(
>),
> 
>command,event.getMaxSizeResponsePDU(),ref,statusInformation);
>                    }
>                    catch(MessageException me)
>                    {
>                        System.out.println("Error while sending
>threadwatch snmp response");
>                        me.printStackTrace();
>                    }
> 
>                    //Event now processed
>                    event.setProcessed(true);
>                 }
>                 else
>                 {
>                     System.out.println("Valid PDU");
>                     int index = 0;
> 
>                     //Message Trap
>                     Vector binding = command.getVariableBindings();
>                     index = binding.indexOf("trapTime");
>                     String trapTime = (String) binding.get(index);
>                     index = binding.indexOf("trapServerName");
>                     String trapServerName = (String)
>binding.get(index);
>                     index = binding.indexOf("trapMachineName");
>                     String trapMachineName = (String)
>binding.get(index);
>                     index = binding.indexOf("trapLogThreadId");
>                     String trapLogThreadId = (String)
>binding.get(index);
>                     index = binding.indexOf("trapLogMsgId");
>                     String trapLogMsgId = (String) binding.get(index);
>                     index = binding.indexOf("trapLogSeverity");
>                     String trapLogSeverity = (String)
>binding.get(index);
>                     index = binding.indexOf("trapLogMessage");
>                     String trapLogMessage = (String)
>binding.get(index);
> 
>                     System.out.println("TRAP TIME = " + trapTime + " |
>SERVER NAME = " + trapServerName + " | MACHINE NAME = " +
>trapMachineName);
>                     System.out.println("THREAD ID = " + trapLogThreadId
>+ " | MSG ID = " + trapLogMsgId + " | SEVERITY = " + trapLogSeverity);
>                     System.out.println("MESSAGE = " + trapLogMessage);
> 
>                     //This event has now been processed
>                     event.setProcessed(true);
>                 }
>             }
>        }
> 
>        public PDU createPDU(Target target)
>        {
>            System.out.println("Create PDU called");
> 
>            PDU request;
> 
>            if(pduType == PDU.V1TRAP)
>            {
>                request = v1TrapPDU;
>            }
>            else
>            {
>                request = new PDU();
>            }
> 
>            request.setType(pduType);
>            return request;
>        }
> 
>        public synchronized void listen() throws IOException{
> 
>            System.out.println("Listen Called");
> 
>            //Set up Listener
>            AbstractTransportMapping transport;
> 
>            if(listenAddress instanceof TcpAddress)
>            {
>                transport = new DefaultTcpTransportMapping((TcpAddress)
>listenAddress);
>            }
>            else
>            {
>                transport = new DefaultUdpTransportMapping((UdpAddress)
>listenAddress);
>            }
> 
>            ThreadPool threadPool = ThreadPool.create("DispatcherPool",
>numDispatcherThreads); //Threadpool size of 2
>            MessageDispatcher mtDispatcher = new
>MultiThreadedMessageDispatcher(threadPool, new MessageDispatcherImpl());
> 
>            //Add Message processing models
>            mtDispatcher.addMessageProcessingModel(new MPv1());
>            mtDispatcher.addMessageProcessingModel(new MPv2c());
>            mtDispatcher.addMessageProcessingModel(new MPv3());
> 
>            //add all security protocols
>            SecurityProtocols.getInstance().addDefaultProtocols();
> 
>            //Dispatcher Processing models and protocols added to Snmp
>object and listener attached
>            Snmp snmp = new Snmp(mtDispatcher,transport);
>            this.target = new CommunityTarget(targetAddress,community);
> 
>            snmp.addCommandResponder(this);
> 
>            transport.listen();
>            System.out.println("ThreadWatch SNMP Manager Listening on "
>+ listenAddress);
> 
>            try
>            {
>                this.wait();
>            }
>            catch(InterruptedException ex)
>            {
>            }
>        }
>    }
>_______________________________________________
>SNMP4J mailing list
>SNMP4J at agentpp.org
>http://lists.agentpp.org/mailman/listinfo/snmp4j
>
>
>  
>


-- 
AGENT++
http://www.agentpp.com
http://www.mibexplorer.com
http://www.mibdesigner.com





More information about the SNMP4J mailing list