Spring mvc 石英+;启动时的Spring双重执行
我有石英2.2.1和弹簧3.2.2。EclipseJuno上的应用程序 这是我的bean配置:Spring mvc 石英+;启动时的Spring双重执行,spring-mvc,quartz-scheduler,Spring Mvc,Quartz Scheduler,我有石英2.2.1和弹簧3.2.2。EclipseJuno上的应用程序 这是我的bean配置: <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframe
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<!-- Spring Quartz -->
<bean id="checkAndRouteDocumentsTask" class="net.tce.task.support.CheckAndRouteDocumentsTask" />
<bean name="checkAndRouteDocumentsJob" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass" value="net.tce.task.support.CheckAndRouteDocumentsJob" />
<property name="jobDataAsMap">
<map>
<entry key="checkAndRouteDocumentsTask" value-ref="checkAndRouteDocumentsTask" />
</map>
</property>
<property name="durability" value="true" />
</bean>
<!-- Simple Trigger, run every 30 seconds -->
<bean id="checkAndRouteDocumentsTaskTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
<property name="jobDetail" ref="checkAndRouteDocumentsJob" />
<property name="repeatInterval" value="30000" />
<property name="startDelay" value="15000" />
</bean>
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="jobDetails">
<list>
<ref bean="checkAndRouteDocumentsJob" />
</list>
</property>
<property name="triggers">
<list>
<ref bean="checkAndRouteDocumentsTaskTrigger" />
</list>
</property>
</bean>
感谢您的帮助。请确保您没有在项目的web.xml文件中同时加载这两个文件。如果单独加载spring-quartz.xml文件,然后单独加载“导入”spring-quartz.xml文件的servlet-config.xml文件,那么将加载两次该文件,这将导致两个调度程序实例。简单的解决方法是:(1)确保您没有在web.xml文件中加载spring-quartz.xml,或者(2)删除其他xml文件中的import语句 更新:感谢您向我们展示web.xml来排除这种情况。仔细检查xml文件后,您将使用作业详细信息和触发器设置SchedulerFactoryBean。这是你的问题。作业详细信息包含在触发器中,因此再次将其放入会导致计划两次。请阅读有关setJobDetails()方法的这两个链接的文档: http://docs.spring.io/spring/docs/2.5.6/api/org/springframework/scheduling/quartz/SchedulerAccessor.html#setJobDetails%28org.quartz.JobDetail[]%29 http://docs.spring.io/spring/docs/2.5.6/api/org/springframework/scheduling/quartz/SchedulerAccessor.html#setTriggers%28org.quartz.Trigger[]%29 重要信息摘录: setJobDetails public void setJobDetails(JobDetail[]jobDetails) 向此FactoryBean创建的计划程序注册JobDetail对象列表,以供触发器引用。 当触发器确定JobDetail本身时,这不是必需的:在这种情况下,JobDetail将与触发器一起隐式注册 解决方案是从SchedulerFactoryBean中删除jobDetails,如下所示:
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="checkAndRouteDocumentsTaskTrigger" />
</list>
</property>
</bean>
确保您没有在项目的web.xml文件中同时加载这两个文件。如果单独加载spring-quartz.xml文件,然后单独加载“导入”spring-quartz.xml文件的servlet-config.xml文件,那么将加载两次该文件,这将导致两个调度程序实例。简单的解决方法是:(1)确保您没有在web.xml文件中加载spring-quartz.xml,或者(2)删除其他xml文件中的import语句 更新:感谢您向我们展示web.xml来排除这种情况。仔细检查xml文件后,您将使用作业详细信息和触发器设置SchedulerFactoryBean。这是你的问题。作业详细信息包含在触发器中,因此再次将其放入会导致计划两次。请阅读有关setJobDetails()方法的这两个链接的文档: http://docs.spring.io/spring/docs/2.5.6/api/org/springframework/scheduling/quartz/SchedulerAccessor.html#setJobDetails%28org.quartz.JobDetail[]%29 http://docs.spring.io/spring/docs/2.5.6/api/org/springframework/scheduling/quartz/SchedulerAccessor.html#setTriggers%28org.quartz.Trigger[]%29 重要信息摘录: setJobDetails public void setJobDetails(JobDetail[]jobDetails) 向此FactoryBean创建的计划程序注册JobDetail对象列表,以供触发器引用。 当触发器确定JobDetail本身时,这不是必需的:在这种情况下,JobDetail将与触发器一起隐式注册 解决方案是从SchedulerFactoryBean中删除jobDetails,如下所示:
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="checkAndRouteDocumentsTaskTrigger" />
</list>
</property>
</bean>
确保您没有在项目的web.xml文件中同时加载这两个文件。如果单独加载spring-quartz.xml文件,然后单独加载“导入”spring-quartz.xml文件的servlet-config.xml文件,那么将加载两次该文件,这将导致两个调度程序实例。简单的解决方法是:(1)确保您没有在web.xml文件中加载spring-quartz.xml,或者(2)删除其他xml文件中的import语句 更新:感谢您向我们展示web.xml来排除这种情况。仔细检查xml文件后,您将使用作业详细信息和触发器设置SchedulerFactoryBean。这是你的问题。作业详细信息包含在触发器中,因此再次将其放入会导致计划两次。请阅读有关setJobDetails()方法的这两个链接的文档: http://docs.spring.io/spring/docs/2.5.6/api/org/springframework/scheduling/quartz/SchedulerAccessor.html#setJobDetails%28org.quartz.JobDetail[]%29 http://docs.spring.io/spring/docs/2.5.6/api/org/springframework/scheduling/quartz/SchedulerAccessor.html#setTriggers%28org.quartz.Trigger[]%29 重要信息摘录: setJobDetails public void setJobDetails(JobDetail[]jobDetails) 向此FactoryBean创建的计划程序注册JobDetail对象列表,以供触发器引用。 当触发器确定JobDetail本身时,这不是必需的:在这种情况下,JobDetail将与触发器一起隐式注册 解决方案是从SchedulerFactoryBean中删除jobDetails,如下所示:
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="checkAndRouteDocumentsTaskTrigger" />
</list>
</property>
</bean>
确保您没有在项目的web.xml文件中同时加载这两个文件。如果单独加载spring-quartz.xml文件,然后单独加载“导入”spring-quartz.xml文件的servlet-config.xml文件,那么将加载两次该文件,这将导致两个调度程序实例。简单的解决方法是:(1)确保您没有在web.xml文件中加载spring-quartz.xml,或者(2)删除其他xml文件中的import语句 更新:感谢您向我们展示web.xml来排除这种情况。船尾
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="checkAndRouteDocumentsTaskTrigger" />
</list>
</property>
</bean>