我有两个java类,我们称它们为Manager-1和Manager-2,它们都使用snmp4j来管理一些交换机。 Manager-1 位于我当前工作项目的源代码中,但 Manager-2 是从库导入的。
两个类都独立运行,可以看到它们在相关交换机上进行通信和执行 snmp 操作。然而,当它们同时运行时,我看到
MessageException: Message processing model 3 returned error: Unknown security name
。
我已设法确定该问题来自使用自己的 USM 实例的 Manager-1 和 Manager-2,但我不确定如何解决该问题。
我在计划的 snmpGet 函数中添加了一些调试打印输出,并且可以在运行时看到 Manager-1 在执行第一个操作时正确地将用户添加到 usm,如下所示:
System.out.println("DEBUG: " + mySnmp.getUSM().getUserTable().getUserEntries());
我将相同的打印输出添加到 Manager-2 中,并看到它正确地将其用户添加到自己的 USM,但是当 Manager-1 执行其下一个计划的 snmp 操作时,我可以看到它的 USM 用户现在已填充为 Manager-2 的用户而不是 Manager-1 定义的。
我对 snmp4j 不太熟悉,所以如果有人知道我缺少什么,我将不胜感激。
您的问题终于找到解决方案了吗?看来我也有同样的情况