Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc 石英+;启动时的Spring双重执行_Spring Mvc_Quartz Scheduler - Fatal编程技术网

Spring mvc 石英+;启动时的Spring双重执行

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

我有石英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.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>