java.sql.SQLException: ошибка ввода-вывода: сбой единого входа: собственная библиотека SSPI - PullRequest
11 голосов
/ 19 ноября 2010

У меня есть два веб-приложения, которые должны запускаться на 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 для единого входа.

Ответы [ 4 ]

18 голосов
/ 20 января 2011

Я прошел через это, изменив URL с

jdbc:jtds:sqlserver://host_server:1433/Database_name

до

jdbc:jtds:sqlserver://host_server:1433/Database_name;user=XXX;password=YYY

Очевидно, что «когда URL [не] не содержит свойств пользователя и пароля, системы используют метод аутентификации Windows и появляется сообщение об ошибке« Собственная библиотека SSPI не найдена ».

17 голосов
/ 19 января 2011

Это решение:

Загрузите драйвер jTDS , распакуйте его и скопируйте x86\SSO\ntlmauth.dll в jdk\jre\bin.

Это должно решить вашу проблему.

Изменить:

Без JDK путь для меня был C:\Program Files\Java\jre7\bin\ntlmauth.dll

jTDS должен иметь возможность загружать собственную библиотеку SPPI (ntlmauth.dll). Поместите эту DLL в любом месте системного пути (определяется системной переменной PATH), и все готово.

2 голосов
/ 15 сентября 2014

Если вы работаете в 64-битных окнах, но используете 32-битную Java (ту, что в программных файлах x86), тогда вам нужна 32-битная библиотека ntlmauth, а не 64-битная, которую вы могли ожидать.

2 голосов
/ 08 февраля 2013

Если вы пытаетесь запустить два (или более) приложения Tomcat на одном и том же сервере, которые оба обращаются к SQL Server с использованием драйвера JTDS и аутентификации Windows, очень любезный ответ Криса Уайта: здесь .

Ответ Криса связан с sqljdbc_auth.dll, но рекомендации для драйвера JTDS и ntlmauth.dll одинаковы:

  1. Поместите ntlmauth.dll в tomcat 7.0\bin каталог.На самом деле, я считаю, что вы можете поместить ntlmauth.dll в любой каталог в системном пути или в каталог Java jre\bin.
  2. Важно, что не связывайте JTDS jar в файл war любого приложения Tomcat, используядрайвер JTDS.Вместо этого поместите одну копию в каталог Tomcat\lib, куда Tomcat загрузит ее и сделает доступной для всех приложений.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...