如何在 tomcat 服务器启动时 运行 长时间 运行ning 批处理作业?
How to run a longrunning batch job on startup of tomcat server?
我正在使用
在应用程序启动时启动 spring-batch
作业
spring.batch.job.names=MyJob
@Configuration
public class MyJob {
@Bean
public Job testJob() throws IOException {
return jobBuilderFactory.get(MyJob.class.getSimpleName())
.start(import())
.build();
}
}
不幸的是,这会以某种方式延迟 tomcat
服务器启动。该作业的 运行 时间为几分钟,因此出现以下错误:
Server Tomcat v8.0 Server at localhost was unable to start within 45
seconds. If the server requires more time, try increasing the timeout
in the server editor.
问题:我怎样才能运行这项工作而不妨碍tomcat启动?例如 运行 正在异步作业?
您可以使用 @Scheduled
annotation configured with a fixedDelay
.
有关详细信息,请参阅参考资料中的 Task Execution and Scheduling。
我最终使用此解决方案在启动时启动缓存预热:
private boolean isFirstTime = true;
@Scheduled(fixedDelay = 60000)
protected void refreshCachesStartup(){
if(isFirstTime){
// your code
isFirstTime = false;
}
}
编辑:请参阅 this 问题以获得关于该论点的更具体观点。
您可以包含 ServletContextListener.
将您的代码放入 contextInitialized 方法中。
我正在使用
在应用程序启动时启动spring-batch
作业
spring.batch.job.names=MyJob
@Configuration
public class MyJob {
@Bean
public Job testJob() throws IOException {
return jobBuilderFactory.get(MyJob.class.getSimpleName())
.start(import())
.build();
}
}
不幸的是,这会以某种方式延迟 tomcat
服务器启动。该作业的 运行 时间为几分钟,因此出现以下错误:
Server Tomcat v8.0 Server at localhost was unable to start within 45 seconds. If the server requires more time, try increasing the timeout in the server editor.
问题:我怎样才能运行这项工作而不妨碍tomcat启动?例如 运行 正在异步作业?
您可以使用 @Scheduled
annotation configured with a fixedDelay
.
有关详细信息,请参阅参考资料中的 Task Execution and Scheduling。
我最终使用此解决方案在启动时启动缓存预热:
private boolean isFirstTime = true;
@Scheduled(fixedDelay = 60000)
protected void refreshCachesStartup(){
if(isFirstTime){
// your code
isFirstTime = false;
}
}
编辑:请参阅 this 问题以获得关于该论点的更具体观点。
您可以包含 ServletContextListener.
将您的代码放入 contextInitialized 方法中。