jcifs не может разрешить URL DFS - PullRequest
0 голосов
/ 06 декабря 2018

При попытке доступа к SmbFile по URL-адресу DFS происходит сбой библиотеки jcifs.Но когда я использую UNC, возвращенный dfsutil, он работает.

NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication( domain, user, pass );
SmbFile folder = new SmbFile(path,auth);

Если path установлен на

smb://mydomain.example.com/ourdfs/go/to/my/folder

, вызов завершается с

Exception in thread "main" jcifs.smb.SmbException: The network name cannot be found.

Но это успешно, когда вызывается с разрешенным именем

dfsutil diag viewdfspath \\mydomain.example.com\ourdfs\go\to\my\folder

The DFS Path <\\mydomain.example.com\ourdfs\go\to\my\folder> 
resolves to -> <\\someserver.example.com\sharename$\my\folder>

Тогда следующий URL работает для path

smb://someserver.example.com/sharename$/my/folder

Как мне настроить jcifs для правильной обработки DFS, т.е.не нужно переводить URL через dfsutil?

1 Ответ

0 голосов
/ 06 декабря 2018

Решением является настройка конфигурации WINS.IPCONFIG /ALL покажет информацию:

Connection-specific DNS Suffix  . : MYDOMAIN.EXAMPLE.COM
Description . . . . . . . . . . . : Ethernet Connection
Physical Address. . . . . . . . . : DE-AD-BE-EF-F0-0D
DHCP Enabled. . . . . . . . . . . : Yes
Autoconfiguration Enabled . . . . : Yes
IPv4 Address. . . . . . . . . . . : 10.10.1.42(Preferred)
Subnet Mask . . . . . . . . . . . : 255.0.0.0
Lease Obtained. . . . . . . . . . : December 3, 2018 09:03:04 AM
Lease Expires . . . . . . . . . . : December 9, 2018 09:03:04 AM
Default Gateway . . . . . . . . . : 10.10.1.1
DHCPv4 Class ID . . . . . . . . . : O-mobile
DHCP Server . . . . . . . . . . . : 10.10.11.13
DNS Servers . . . . . . . . . . . : 10.10.4.48
                                    10.10.4.56
Primary WINS Server . . . . . . . : 10.10.1.59
Secondary WINS Server . . . . . . : 10.10.2.58
NetBIOS over Tcpip. . . . . . . . : Enabled

Затем необходимо настроить элемент конфигурации следующим образом:

jcifs.netbios.wins=10.10.1.59

или установить его с помощью jcifs.Config.setProperty()

...