我刚刚开始使用Solr,我已经在Tomcat上部署并运行了它。我设置了模式和数据导入处理程序,它可以很好地索引文件。现在我想安排这个dataImportHandler大约每小时运行一次。
有一个维基页面详细介绍了这些文件的here。
但是没有关于在哪里创建文件以及如何部署文件的说明
在here之前,关于堆栈溢出也提出了类似的问题。
答案是“创建类ApplicationListener、HTTPPostScheduler和SolrDataImportProperties”。我不知道我应该在哪里创建类。但是我猜了一下,我下载了最新的夜间构建,并在org.apache.solr.handler.dataimport.scheduler包中创建了类(从维基页面复制粘贴类)。我编译并运行ant dist命令来创建可部署的jar文件。
我按照wiki中的说明配置了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中删除侦听器代码。
你知道我会做错什么吗?
发布于 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/
发布于 2015-07-09 08:05:02
有关定期调用任何HTTP链接的简单WAR,请参阅我的TimerHttpTask。例如,该链接可以是用于启动增量导入的DIH链接。该项目是LGPL。JNDI用于在不重新构建WAR的情况下调度作业。下面的示例指示TimerHttpTask使用固定延迟调用网址,初始延迟为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"发布于 2011-06-22 21:28:09
如果您复制了ApplicationListener等的源代码并运行了构建,则可能需要检查这些文件是否已编译到您的发行版中。为此,您可以打开war文件,查看是否有包含您提到的那些类的.class文件的jar,或者查看.war中的类目录,查看它们是否在那里。如果它们不是,那么它们将不会加载到web应用程序中(因此部署失败)。
您可能需要自己编译它们(创建您自己的具有已编译类的jar文件),并手动将jar文件包含在war文件中(至少这是一个很好的测试)。
您也可以使用Stackoverflow post中的第二个答案,即从cron或任务调度器调用命令行。
https://stackoverflow.com/questions/6432190
复制相似问题