2012-05-12 61 views
0

我使用SNMP4J并尝试设置一些值。撤销失败错误集

 Variable var = OctetString.fromHexString(v); 
     VariableBinding varBind = new VariableBinding(new OID(o),var); 
     pdu.add(varBind); 
     pdu.setRequestID(new Integer32(1)); 
     pdu.setType(PDU.SET); 
     Snmp snmp = new Snmp(transport); 
     ResponseEvent response = snmp.set(pdu, comtarget); 
     if (response != null){ 
      PDU responsePDU = response.getResponse(); 
      if (responsePDU != null){ 
       int errorStatus = responsePDU.getErrorStatus(); 
       String errorStatusText = responsePDU.getErrorStatusText(); 
       if (errorStatus == PDU.noError) return responsePDU.get(0).getVariable().toString(); 
       else return errorStatusText; 
      }else return "No response"; 
     }else return null; 

它的做工精细,但有时我得到错误Undo failed
是否有任何人知道这个错误的原因是什么,我该如何解决?

回答

3

错误代码Undo Failed意味着

  1. 您试图在单个请求中
  2. 其中一个集合的尝试以设置一个以上的变量失败
  3. 虽然试图回滚整个操作(即撤消完成的更改),另一个错误阻止完成撤消

这实质上是tel告诉你它不知道原始设置操作完成了多少,并且事情可能会处于不一致的状态。我不太了解SNMP错误报告的详细信息,以了解响应是否包含描述早期问题的其他错误代码。

顺便说一句,它花了20秒,用Google找到这些信息。

0

有一点希望为您解决,因为如果你潜入RFC文档,

http://www.ietf.org/rfc/rfc1448.txt

在第25页undoFailed的原因进行了说明。

严格来说,这是由SNMP代理引起的,只有它的供应商可以告诉如何避免它。