【发布时间】:2016-05-12 04:55:04
【问题描述】:
春季计划的 cron 作业在计划时间内运行两次。
使用spring 4.2.5版本。
REST API -> Jersey + Spring 集成。
web.xml 如下。
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>REST-Service-Servlet</servlet-name>
<servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.provider.packages</param-name>
<param-value>RESTController</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.spi.container.ContainerResponseFilters</param-name>
<param-value>com.om.ResponseCorsFilter</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.spi.container.ContainerResponseFilters</param-name>
<param-value>com.sun.jersey.api.container.filter.LoggingFilter</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>REST-Service-Servlet</servlet-name>
<url-pattern>/api/*</url-pattern>
任务入口的spring应用上下文xml文件。
<task:annotation-driven/>
Spring bean如下。
@Component("springBean")
public class SpringBean {
@Scheduled(cron = "0 35 23 * * ?")
public void job() {....}
【问题讨论】:
-
请提供minimal reproducible example 并说明您如何检测到它运行了两次。
-
如果它运行了两次,你就是在加载你的配置两次...
-
如果你在配置文件中定义了“SpringBean”,它会运行两次。
标签: java spring spring-mvc