DIH Планирование в Solr - PullRequest
       5

DIH Планирование в Solr

0 голосов
/ 22 июня 2011

Я только начал играть с Solr и развернул его на Tomcat.У меня настроен обработчик импорта схемы и данных, и он прекрасно индексирует файлы.Теперь я хочу запланировать запуск этого dataImportHandler каждый час или около того.

Есть вики-страница с подробным описанием файлов здесь .

Но нет инструкций о том, гдесоздать файлы и как их развернуть

Подобный вопрос был задан в отношении переполнения стека до здесь .

Ответ был на «Создание классов ApplicationListener, HTTPPostScheduler и SolrDataImportProperties».Я не знаю, где мне следует создавать классы.Но я сделал предположение и скачал последнюю ночную сборку и создал классы в пакете org.apache.solr.handler.dataimport.scheduler (скопируйте вставку классов со страницы вики).Я скомпилировал и запустил команду ant dist для создания развертываемых файлов jar.

Я настроил dataimport.properties в соответствии с инструкциями в вики, а затем добавил прослушиватель в файл web.xml, как указано в ответе выше.Но когда я начал Tomcat Solr не был развернут.

Я вижу это сообщение об ошибке в файле журнала:

INFO: Starting Servlet Engine: Apache Tomcat/7.0.14
Jun 21, 2011 5:20:47 PM org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor solr.xml from /home/sabman/programs/apache-tomcat-7.0.14/conf/Catalina/localhost
Jun 21, 2011 5:20:47 PM org.apache.catalina.startup.HostConfig deployDescriptor
WARNING: A docBase /home/sabman/programs/apache-tomcat-7.0.14/webapps/solr.war inside the host appBase has been specified, and will be ignored
Jun 21, 2011 5:20:47 PM org.apache.catalina.startup.SetContextPropertiesRule begin
WARNING: [SetContextPropertiesRule]{Context} Setting property 'debug' to '0' did not find a matching property.
Jun 21, 2011 5:20:48 PM org.apache.catalina.core.StandardContext startInternal
SEVERE: Error listenerStart

Мне пришлось удалить код прослушивателя из файла web.xml, чтобы он работал, как это было раньше.

Есть идеи о том, что я могу делать неправильно?

Ответы [ 3 ]

1 голос
/ 23 июня 2011

Я получил ответ из списка рассылки Solr:

Страница Wiki описывает дизайн для планировщика, который еще не был передан в Solr (я проверял). Я видел патч на днях (см. https://issues.apache.org/jira/browse/SOLR-2305), но он не выглядел хорошо проверенным.

Я думаю, что вы сейчас застряли с чем-то вроде cron. Если ваше приложение написано на Java, посмотрите на планировщик Quartz - http://www.quartz -scheduler.org /

1 голос
/ 09 июля 2015

См. Мой TimerHttpTask для простой WAR, чтобы периодически вызывать любую ссылку HTTP. Например, ссылка может быть ссылкой DIH для запуска дельта-импорта. Проект LGPL. JNDI используется для планирования заданий без перестройки WAR. Приведенные ниже примеры указывают TimerHttpTask на вызов URL с использованием фиксированной задержки с начальной задержкой 15 секунд и каждые 60 после этого.

Конфигурация Jetty JNDI

<Call name="setProperty">
    <Arg>TIMEAPI-UTC-NOW</Arg> 
    <Arg>FD|15000|60000|http://www.timeapi.org/utc/now.json</Arg>
</Call>

Конфигурация Tomcat JNDI

TIMEAPI-UTC-NOW="FD|15000|60000|http://www.timeapi.org/utc/now.json"
0 голосов
/ 22 июня 2011

Если вы скопировали исходный код для ApplicationListener и т. Д. И запустили сборку, вы можете проверить, действительно ли файлы компилируются в ваш дистрибутив. Вы можете сделать это, открыв файл war и посмотрев, есть ли файл jar, содержащий файлы .class для тех классов, которые вы упомянули, или посмотрите в каталоге классов в .war, чтобы увидеть, есть ли они там. Если это не так, они не будут загружены в веб-приложение (отсюда и неудачное развертывание).

Возможно, вам придется скомпилировать их самостоятельно (создать собственный файл jar, в котором есть скомпилированные классы) и вручную включить файл jar в файл war (по крайней мере, это был бы хороший тест).

Вы также можете просто использовать второй ответ из этого поста Stackoverflow, который должен был вызывать командную строку из cron или планировщика задач.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...