1. 解决了有时发现程序结束不了的问题,根本原因在于有一个set没有同步,改为
hasDetected = Collections.synchronizedSet(new HashSet<String>())
后,问题解决。
2. 更改了路由发现中关于子网的一个bug:
原代码:
if(!pool.existSubnet(subnet)){
engine.addSubnet(subnet);
router.addSubnet(subnet);
}
改为:
Subnet subnet = pool.getSubnetByIP(item.getDest());
if(subnet==null){ //if subnet doesn't exist
subnet = new Subnet();
subnet.setNetAddress(item.getDest());
subnet.setNetMask(item.getNetMask());
engine.addSubnet(subnet);
}
router.addSubnet(subnet);
3. 2.0中只能对一个网络进行发现,3.0可以对多个网络进行发现,画出多个拓扑图。
4. 2.0中只能有一个发现范围,3.0可以增加多个发现范围。
5. 2.0中各表之间没有关联,初始化时要执行多条SQL代码,3.0中利用表外键,
只要删除一条记录,就可以删除所有相关数据。
6. 3.0在发现完之后,保存所有设备的SNMP表数据。
7. 3.0为再发现留有接口,使拓扑再发现成为可能,只是暂时没时间去实现。
8. 拓扑节点排序算法以及拓扑图的生成
排序算法 MapCompositor 给它节点以及连接,按一定算法计算出各节点的位置坐标。
DefaultCompositor实现接口computeCoordinate,把节点按排成若干个圆。
用DefaultMapBuilder dmb = new DefaultMapBuilder();
dmb.buildMap(config.getId());
来测试排序算法,因为它不要用到内存中的数据,直接取数据库的数据。
发现执行的是 NewDiscoveryVisitor.buildDefaultMap()
调用发现后内存中的数据。
9.增加网络设备的服务器时,可以重用发现模块中的代码。在2.0中是专门写了一长串代码,
与发现模块没关系。