首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Solr中的DIH调度

Solr中的DIH调度
EN

Stack Overflow用户
提问于 2011-06-22 05:25:39
回答 3查看 2.1K关注 0票数 0

我刚刚开始使用Solr,我已经在Tomcat上部署并运行了它。我设置了模式和数据导入处理程序,它可以很好地索引文件。现在我想安排这个dataImportHandler大约每小时运行一次。

有一个维基页面详细介绍了这些文件的here

但是没有关于在哪里创建文件以及如何部署文件的说明

here之前,关于堆栈溢出也提出了类似的问题。

答案是“创建类ApplicationListener、HTTPPostScheduler和SolrDataImportProperties”。我不知道我应该在哪里创建类。但是我猜了一下,我下载了最新的夜间构建,并在org.apache.solr.handler.dataimport.scheduler包中创建了类(从维基页面复制粘贴类)。我编译并运行ant dist命令来创建可部署的jar文件。

我按照wiki中的说明配置了dataimport.properties,然后按照上面答案中的说明在web.xml文件中添加了侦听器。但是当我开始的时候,Tomcat solr还没有被部署。

我在日志文件中看到以下错误消息:

代码语言:javascript
复制
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中删除侦听器代码。

你知道我会做错什么吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-24 02:51:40

我从Solr邮件列表中得到了这样的回复:

Wiki页面描述了一个调度器的设计,它还没有提交给Solr (我已经检查过了)。前几天我确实看到了一个补丁(参见https://issues.apache.org/jira/browse/SOLR-2305),但它看起来没有经过很好的测试。

我认为你现在基本上是被像cron这样的东西卡住了。如果您的应用程序是用java编写的,请查看Quartz调度器- http://www.quartz-scheduler.org/

票数 1
EN

Stack Overflow用户

发布于 2015-07-09 08:05:02

有关定期调用任何HTTP链接的简单WAR,请参阅我的TimerHttpTask。例如,该链接可以是用于启动增量导入的DIH链接。该项目是LGPL。JNDI用于在不重新构建WAR的情况下调度作业。下面的示例指示TimerHttpTask使用固定延迟调用网址,初始延迟为15秒,此后每隔60秒调用一次。

Jetty JNDI配置

代码语言:javascript
复制
<Call name="setProperty">
    <Arg>TIMEAPI-UTC-NOW</Arg> 
    <Arg>FD|15000|60000|http://www.timeapi.org/utc/now.json</Arg>
</Call>

Tomcat JNDI配置

代码语言:javascript
复制
TIMEAPI-UTC-NOW="FD|15000|60000|http://www.timeapi.org/utc/now.json"
票数 1
EN

Stack Overflow用户

发布于 2011-06-22 21:28:09

如果您复制了ApplicationListener等的源代码并运行了构建,则可能需要检查这些文件是否已编译到您的发行版中。为此,您可以打开war文件,查看是否有包含您提到的那些类的.class文件的jar,或者查看.war中的类目录,查看它们是否在那里。如果它们不是,那么它们将不会加载到web应用程序中(因此部署失败)。

您可能需要自己编译它们(创建您自己的具有已编译类的jar文件),并手动将jar文件包含在war文件中(至少这是一个很好的测试)。

您也可以使用Stackoverflow post中的第二个答案,即从cron或任务调度器调用命令行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6432190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档