Не удается получить доступ к общему ресурсу DFS с помощью jcifs-ng 2.x (с использованием SMB2) - PullRequest
0 голосов
/ 10 октября 2019

У меня настроен общий ресурс DFS (2 сервера Windows 2012 с реплицируемым общим ресурсом, ссылка DFS на основе домена), и я не могу подключиться к ним в своем приложении Java с помощью библиотеки jcifs-ng v2.x.

Я могу легко получить доступ к этой папке через проводник, например, \\ myDomain \ myNamespace \ myShare. У меня есть Java-приложение, которое также может без проблем обращаться к этой общей папке DFS с помощью библиотеки jcifs. Проблема в том, что jcifs поддерживает только SMB1, что устарело и небезопасно. Таким образом, я обновляюсь до SMB2, что означает, что мне нужно обновить мою библиотеку, например, до jcifs-ng.

. Используя jcifs-ng v1.5.3, работает нормально (поддерживает только SMB1), я могу получить доступ к общей папке DFS. , но использование jcifs-ng v2.x не будет работать с использованием SMB1 или SMB2. Я получаю исключение «SmbException: имя сети не может быть найдено».

...Caused by: org.apache.commons.vfs.FileSystemException: Could not determine the type of file "smb://myDomain/myNamespace/myShare".
 at org.apache.commons.vfs.provider.AbstractFileObject.attach(AbstractFileObject.java:1485)
 at org.apache.commons.vfs.provider.AbstractFileObject.getType(AbstractFileObject.java:460)
 ... 38 more
Caused by: jcifs.smb.SmbException: The network name cannot be found.
 at jcifs.smb.SmbTransportImpl.checkStatus2(SmbTransportImpl.java:1457)
 at jcifs.smb.SmbTransportImpl.checkStatus(SmbTransportImpl.java:1568)
 at jcifs.smb.SmbTransportImpl.sendrecv(SmbTransportImpl.java:1023)
 at jcifs.smb.SmbTransportImpl.send(SmbTransportImpl.java:1539)
 at jcifs.smb.SmbSessionImpl.send(SmbSessionImpl.java:409)
 at jcifs.smb.SmbSessionImpl.send(SmbSessionImpl.java:347)
 at jcifs.smb.SmbTreeImpl.treeConnect(SmbTreeImpl.java:611)
 at jcifs.smb.SmbTreeConnection.connectTree(SmbTreeConnection.java:614)
 at jcifs.smb.SmbTreeConnection.connectHost(SmbTreeConnection.java:568)
 at jcifs.smb.SmbTreeConnection.connectHost(SmbTreeConnection.java:489)
 at jcifs.smb.SmbTreeConnection.connect(SmbTreeConnection.java:465)
 at jcifs.smb.SmbTreeConnection.connectWrapException(SmbTreeConnection.java:426)
 at jcifs.smb.SmbFile.ensureTreeConnected(SmbFile.java:551)
 at jcifs.smb.SmbFile.exists(SmbFile.java:845)
 at jcifs.smb.SmbFile.isDirectory(SmbFile.java:1063)
 ... 40 more

Я уже пробовал свойства "jcifs.smb.client.dfs.disabled = false", "jcifs.netbios.wins= xxxx "," jcifs.resolveOrder ", я обменял NtlmPasswordAuthentication на более новый NtlmPasswordAuthenticator, использовал новый CIFSContext, но все безрезультатно.

РЕДАКТИРОВАТЬ: я заметил, что если я установлю пространство имен DFS без добавленияОбщая папка к нему, я могу получить к нему доступ. Как только я добавляю общую папку в это пространство имен, появляется ошибка при попытке перечислить все дочерние элементы пространства имен DFS. Каким-то образом направление DFS не работает для общих ресурсов в пространстве имен ...

Есть идеи, в чем может быть проблема?

...