Ошибка ввода-вывода: сбой единого входа: не загружена собственная библиотека SSPI, несколько приложений tomcat
У меня есть соединение Windows с базой данных MSSQL с аутентификацией Kerberos. Кроме того, я использую вафельный фильтр для единого входа.
Это соединение использует файл jtds1.3.1.jar. SSO нужен файл ntlmauth.dll. Я использую tomcat в качестве сервера приложений.
Однако я заметил, что это работает только для одного веб-приложения, развернутого за раз. если у меня есть одинаковые настройки для нескольких веб-приложений, все они терпят неудачу, кроме одного. Это довольно странное поведение. Любая идея, что здесь происходит
1 ответ
Извините ребята. Я нашел решение в другом посте ниже по ссылке
Каждое веб-приложение имеет свой собственный Classloader (изолирующий их). Когда вы вызываете метод Class.forName(), появляется статический блок, который пытается загрузить общую библиотеку (файл dll) - поэтому оба веб-приложения пытаются загрузить общую библиотеку, поэтому появляется сообщение об ошибке, когда второй пытается загрузить.
Jar JDBC, то есть jtds1.3.1.jar, следует переместить из комплекта с вашими войнами в папку tomcat 7.0 / lib и скопировать ntlmauth.dll в папку tomcat / bin - таким образом, он будет находиться в родительском загрузчике классов tomcat, и класс будет загружен только один раз.