Java.sql.SQLException: ошибка ввода-вывода: ошибка SSO: встроенная библиотека SSPI
У меня есть два веб-приложения, которые нужно запускать на Tomcat 6, MS SQL 2008 и JTDS-1.2.2 в качестве драйвера.
Если я запускаю только одно веб-приложение, все работает нормально, но как только я запускаю второй, я получаю следующую ошибку (это не имеет значения для порядка):
java.sql.SQLException: I/O Error: SSO Failed: Native SSPI library
Конечно, библиотека ntlmauth.dll
находится под C:\WINDOWS\system32
Кажется, что второе запущенное приложение не может найти ntlmauth.dll
для единственного знака.
Ответы
Ответ 1
Это решение:
Скачайте драйвер jTDS, разархивируйте его и скопируйте x86\SSO\ntlmauth.dll
в jdk\jre\bin
.
Это должно решить вашу проблему.
Edit:
Без установленного JDK путь для меня был C:\Program Files\Java\jre7\bin\ntlmauth.dll
jTDS должен иметь возможность загружать собственную библиотеку SPPI (ntlmauth.dll). Разместите эту DLL в любом месте системного пути (определяется системной переменной PATH), и вы все настроены.
Ответ 2
Я прошел мимо этого, изменив URL-адрес из
jdbc:jtds:sqlserver://host_server:1433/Database_name
к
jdbc:jtds:sqlserver://host_server:1433/Database_name;user=XXX;password=YYY
По-видимому, "Когда URL [does] не содержит свойств пользователя и пароля, в системах используется метод проверки подлинности Windows и появляется ошибка" Собственная библиотека SSPI ".
Ответ 3
Если вы пытаетесь запустить два (или более) приложения Tomcat на том же сервере, что и для доступа к SQL Server с использованием драйвера JTDS и проверки подлинности Windows, очень полезный ответ любезно предоставлен Крисом Уайтом .
Ответ Криса связан с sqljdbc_auth.dll, но рекомендации одинаковы для драйвера JTDS и ntlmauth.dll:
- Поместите файл ntlmauth.dll в каталог
tomcat 7.0\bin
. На самом деле, я считаю, вы можете поместить ntlmauth.dll в любой каталог в системном пути или в каталог Java jre\bin
.
- Важно отметить, что не собирайте банку JTDS в военном файле любого приложения Tomcat с помощью драйвера JTDS. Вместо этого поместите одну копию в каталог
Tomcat\lib
, где Tomcat загрузит ее и сделает ее доступной для всех приложений.
Ответ 4
Если вы находитесь в 64-битных окнах, но запускаете 32-разрядную Java-версию (то есть в программных файлах x86), вам нужна 32-разрядная dll dll, а не 64-разрядная, которую вы могли бы ожидать.