Ошибка ввода-вывода: сбой единого входа: не загружена собственная библиотека SSPI, несколько приложений tomcat

У меня есть соединение Windows с базой данных MSSQL с аутентификацией Kerberos. Кроме того, я использую вафельный фильтр для единого входа.

Это соединение использует файл jtds1.3.1.jar. SSO нужен файл ntlmauth.dll. Я использую tomcat в качестве сервера приложений.

Однако я заметил, что это работает только для одного веб-приложения, развернутого за раз. если у меня есть одинаковые настройки для нескольких веб-приложений, все они терпят неудачу, кроме одного. Это довольно странное поведение. Любая идея, что здесь происходит

1 ответ

Извините ребята. Я нашел решение в другом посте ниже по ссылке

/questions/25183549/sobstvennaya-biblioteka-sqljdbcauthdll-uzhe-zagruzhena-v-drugoj-zagruzchik-klassov/25183563#25183563

Каждое веб-приложение имеет свой собственный Classloader (изолирующий их). Когда вы вызываете метод Class.forName(), появляется статический блок, который пытается загрузить общую библиотеку (файл dll) - поэтому оба веб-приложения пытаются загрузить общую библиотеку, поэтому появляется сообщение об ошибке, когда второй пытается загрузить.

Jar JDBC, то есть jtds1.3.1.jar, следует переместить из комплекта с вашими войнами в папку tomcat 7.0 / lib и скопировать ntlmauth.dll в папку tomcat / bin - таким образом, он будет находиться в родительском загрузчике классов tomcat, и класс будет загружен только один раз.

Другие вопросы по тегам