Solr: Использование нескольких источников данных сервера SQL приводит к ошибке: "...\sqljdbc_auth.dll уже загружен в другой загрузчик классов"

У меня есть один экземпляр Solr, запущенный в Jetty с JRE 8 с 3 коллекциями (так же, как ядра, да?) И еще больше. Я индексирую данные из SQL Server, подключаясь с использованием NTLM в качестве идентификатора процесса Java. У первого ядра индексы нормальные, у второго ошибка. Вот сокращенная трассировка стека.

ERROR - 2014-06-16 11:32:29.897; org.apache.solr.common.SolrException; Full Import failed:java.lang.RuntimeException: java.lang.RuntimeException: org.apache.solr.handler.dataimport.DataImportHandlerException: Unable to execute query:
...
Caused by: java.lang.RuntimeException: org.apache.solr.handler.dataimport.DataImportHandlerException: Unable to execute query: 
...
Caused by: org.apache.solr.handler.dataimport.DataImportHandlerException: Unable to execute query:
...
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: This driver is not configured for integrated authentication
...
Caused by: java.lang.UnsatisfiedLinkError: Native Library C:\Program Files\Java\jre8\bin\sqljdbc_auth.dll already loaded in another classloader
...

Основываясь на ответе на этот стекопоток, я понимаю, что мне нужно либо предоставить отдельный экземпляр dll и jar для каждого индекса / ядра, либо поместить dll jar в такое место, чтобы они загружались один раз загрузчиком родительского класса более высокого уровня., Прямо сейчас jar находится в каталоге lib в коллекции /core/index

Я понимаю, что sqljdbc4.jar кто ищет dll, так что я хочу, чтобы оба из них были загружены в самое раннее время выполнения, да?

Я пытался положить sqljdbc_auth.dll в разных папках, включая одну для jre8, для пристани, для solr, для сбора, безрезультатно.

Я также пытался использовать драйвер jTDS, те же результаты, но разные ошибки.

Моя интуиция подсказывает мне, что это проблема конфигурации в Solr, а не проблема JRE или Jetty. Я искал соответствующие конфиги для изменения в solr.xml а также solrconfig.xml но не нашел ничего очевидного.

Я могу опубликовать свои java. Library. Path и java. Class. Path, если это будет полезно.

Я должен добавить, что я новичок в Solr, как только что узнал об этом на прошлой неделе. Мой конфиг очень стандартный. У меня есть обычная установка Jetty и установка BitNami.

Я застрял. Все предложения приветствуются. Спасибо.

1 ответ

Поместите JAR-сервер SQL (или jTDS) в путь загрузки Jetty classpath или в папку JRE lib/ext, чтобы убедиться, что он загружается раньше.

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