如何使用Java找到在Windows DFS中托管文件的服务器



我想获得一个给定UNC路径的托管文件的Active Directory站点。LDAP树有点大,包含多个域和子域。我所做的是解析路径并获取机器名称。从那里,我可以获得IP并查询AD,以获得从子网获取IP范围的AD站点。只要目标服务器只是一台具有共享文件夹的简单Windows计算机,就可以正常工作。

然而,我遇到了基于DFS域的共享问题。获取机器名不起作用,因为您获得的是DFS域控制器,IP可以根据每次分配的根目标动态更改。我不知道怎么解决这个问题。我会感谢任何解决方案,无论是查询活动目录,从DFS服务器以某种方式获取信息,使用JCIFS或任何其他选项。另外,我想知道是否有任何方法可以确定UNC路径属于DFS共享。为了增加复杂性,我们不能使用Windows . net DFS API,因为应用程序在Linux中使用Java运行。

我找到了解决这种情况的方法。您可以从Active Directory(通过LDAP)获得DFS信息。如果路径是mydomain.foo。barfolder1folder2则folder1为DFS服务器。您可以使用该名称搜索类型为"FT-Dfs"的对象(在本例中为folder1),然后从中获取属性remoteServerName,以查找实际路径。唯一的限制是,如果您从全局目录服务器查询Active Directory,则无法获得该属性(这在我意识到之前让我有些头痛),您需要查询包含该对象的特定服务器(或遵循来自父目录林的引用)。

最新更新