[SNMP4J] Null Pointer Exception in DefaultTcpTransportMapping.close()

Frank Fock fock at agentpp.com
Wed Aug 16 09:20:11 CEST 2006


Hi Jesse,

I am working on this. My current approach synchronizes
the access to the "server" member. I have to test if
it works now...

Best regards,
Frank

Prusi, Jesse R wrote:
> Upon further investigation this fix did not solve the problem.  The
> sockets are still not getting closed.  Any ideas?
> 
> Thanks,
> Jesse
> 
> -----Original Message-----
> From: snmp4j-bounces at agentpp.org [mailto:snmp4j-bounces at agentpp.org] On
> Behalf Of Prusi, Jesse R
> Sent: Tuesday, August 15, 2006 7:27 AM
> To: snmp4j at agentpp.org
> Subject: RE: [SNMP4J] Null Pointer Exception in
> DefaultTcpTransportMapping.close()
> 
> I updated the close() method to catch the NPE when join() is called and
> the server thread has already been set to null because run() exited.
> This allows the sockets to be closed so the ports are freed up and it
> seems to fix the problem.  Anyone else have a better solution?
> 
> 
>   /**
>    * Closes all open sockets and stops the internal server thread that
>    * processes messages.
>    */
>   public synchronized void close() {
>     if (server != null) {
>       server.close();
>       try {
>         server.join();
>       }
>       catch (NullPointerException npe) {
>         logger.warn(npe);
>       }
>       catch (InterruptedException ex) {
>         logger.warn(ex);
>       }
>       server = null;
>       for (Iterator it = sockets.values().iterator(); it.hasNext(); ) {
>         SocketEntry entry = (SocketEntry)it.next();
>         try {
>           synchronized (entry) {
>              entry.getSocket().close();
>           }
>           logger.debug("Socket to "+entry.getPeerAddress()+" closed");
>         }
>         catch (IOException iox) {
>           // ingore
>           logger.debug(iox);
>         }
>       }
>       if (socketCleaner != null) {
>         socketCleaner.cancel();
>       }
>       socketCleaner = null;
>     }
>   }
> 
> Thanks,
> Jesse
> 
> 
> 
> -----Original Message-----
> From: snmp4j-bounces at agentpp.org [mailto:snmp4j-bounces at agentpp.org] On
> Behalf Of Prusi, Jesse R
> Sent: Monday, August 14, 2006 6:44 PM
> To: snmp4j at agentpp.org
> Subject: [SNMP4J] Null Pointer Exception in
> DefaultTcpTransportMapping.close()
> 
> Hello,
> 
> I'm using SNMP4J 1.7.3 on a Windows XP machine.
> 
> I find a get a Null Pointer Exception when snmp.close().  Here is my
> sample code:
> 
> public class SnmpTest {
> 
> 	public static void main(String[] args) {
> 		try{
> 			DefaultTcpTransportMapping myTransport = new
> DefaultTcpTransportMapping(
> 					new
> TcpAddress(InetAddress.getLocalHost(),
> 							10163));
> 			myTransport.setMaxInboundMessageSize(1400);
> 			myTransport.setConnectionTimeout(1000);
> 			
> 			Snmp snmp = new Snmp(myTransport);
> 			OctetString localEngineId = new
> OctetString(MPv3.createLocalEngineID());
> 			USM usm = new
> USM(SecurityProtocols.getInstance(), localEngineId, 0);
> 	
> SecurityModels.getInstance().addSecurityModel(usm);
> 			snmp.listen();
> 			System.out.println("Listening on port 10163");
> 			for(int i=0; i < 10000; i++){
> 				System.out.println("spinning " + i);
> 			}
> 			snmp.close();
> 			System.out.println("Closed Snmp Session");
> 		}
> 		catch(Exception e){
> 			e.printStackTrace();
> 		}
> 	}
> }
> 
> I get the following stack trace:
> 
> java.lang.NullPointerException
> 	at
> org.snmp4j.transport.DefaultTcpTransportMapping.close(DefaultTcpTranspor
> tMapping.java:186)
> 	at org.snmp4j.Snmp.close(Snmp.java:429)
> 	at SnmpTest.main(SnmpTest.java:31)
> 
> The NPE does not occur if I comment out the spinning for loop.  I
> thought this might have something to do with the timeout setting of the
> TCP transport mapping, but I still get the error after increasing the
> timeout to 10000.  Any ideas why this is occurring?  Am I using the TCP
> transport mapping incorrectly?
> 
> Thanks,  
> 
> Jesse Prusi
> 
> _______________________________________________
> SNMP4J mailing list
> SNMP4J at agentpp.org
> http://lists.agentpp.org/mailman/listinfo/snmp4j
> 
> 
> _______________________________________________
> SNMP4J mailing list
> SNMP4J at agentpp.org
> http://lists.agentpp.org/mailman/listinfo/snmp4j
> 
> 
> _______________________________________________
> 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