博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Batch 例子: 运行系统命令
阅读量:4050 次
发布时间:2019-05-25

本文共 7841 字,大约阅读时间需要 26 分钟。

– Start


下面的例子定义了一个叫做 EndOfJob 的 Job,它仅仅运行一条命令。

package shangbo.springbatch.example1;import java.util.HashMap;import java.util.Map;import org.springframework.batch.core.Job;import org.springframework.batch.core.JobParameter;import org.springframework.batch.core.JobParameters;import org.springframework.batch.core.JobParametersInvalidException;import org.springframework.batch.core.launch.JobLauncher;import org.springframework.batch.core.repository.JobExecutionAlreadyRunningException;import org.springframework.batch.core.repository.JobInstanceAlreadyCompleteException;import org.springframework.batch.core.repository.JobRestartException;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class App {	public static void main(String[] args) throws JobExecutionAlreadyRunningException, JobRestartException, JobInstanceAlreadyCompleteException, JobParametersInvalidException {		ApplicationContext context = new ClassPathXmlApplicationContext("shangbo/springbatch/example1/EndOfJob.xml");		// job 和 job 参数		Map
parameters = new HashMap<>(); parameters.put("business_date", new JobParameter("20170505")); JobParameters jobParameters = new JobParameters(parameters); Job job = context.getBean(Job.class); // 运行 job JobLauncher jobLauncher = context.getBean(JobLauncher.class); jobLauncher.run(job, jobParameters); }}

运行上面的例子得到如下输出。

七月 13, 2017 9:04:40 下午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@22d8cfe0: startup date [Thu Jul 13 21:04:40 CST 2017]; root of context hierarchy七月 13, 2017 9:04:40 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions信息: Loading XML bean definitions from class path resource [shangbo/springbatch/example1/EndOfJob.xml]七月 13, 2017 9:04:40 下午 org.springframework.beans.factory.support.DefaultListableBeanFactory registerBeanDefinition信息: Overriding bean definition for bean 'endOfTasklet': replacing [Generic bean: class [org.springframework.batch.core.step.tasklet.SystemCommandTasklet]; scope=step; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=false; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in class path resource [shangbo/springbatch/example1/EndOfJob.xml]] with [Root bean: class [org.springframework.aop.scope.ScopedProxyFactoryBean]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in BeanDefinition defined in class path resource [shangbo/springbatch/example1/EndOfJob.xml]]七月 13, 2017 9:04:41 下午 org.springframework.batch.core.repository.support.JobRepositoryFactoryBean afterPropertiesSet信息: No database type set, using meta data indicating: ORACLE七月 13, 2017 9:04:41 下午 org.springframework.batch.core.launch.support.SimpleJobLauncher afterPropertiesSet信息: No TaskExecutor has been set, defaulting to synchronous executor.七月 13, 2017 9:04:41 下午 org.springframework.batch.core.launch.support.SimpleJobLauncher run信息: Job: [FlowJob: [name=EndOfJob]] launched with the following parameters: [{business_date=20170505}]七月 13, 2017 9:04:41 下午 org.springframework.batch.core.job.SimpleStepHandler handleStep信息: Executing step: [EndOfStep]七月 13, 2017 9:04:42 下午 org.springframework.batch.core.launch.support.SimpleJobLauncher run信息: Job: [FlowJob: [name=EndOfJob]] completed with the following parameters: [{business_date=20170505}] and the following status: [COMPLETED]

如果你再次运行这个例子,得到如下输出。

七月 13, 2017 9:05:56 下午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@22d8cfe0: startup date [Thu Jul 13 21:05:56 CST 2017]; root of context hierarchy七月 13, 2017 9:05:56 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions信息: Loading XML bean definitions from class path resource [shangbo/springbatch/example1/EndOfJob.xml]七月 13, 2017 9:05:56 下午 org.springframework.beans.factory.support.DefaultListableBeanFactory registerBeanDefinition信息: Overriding bean definition for bean 'endOfTasklet': replacing [Generic bean: class [org.springframework.batch.core.step.tasklet.SystemCommandTasklet]; scope=step; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=false; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in class path resource [shangbo/springbatch/example1/EndOfJob.xml]] with [Root bean: class [org.springframework.aop.scope.ScopedProxyFactoryBean]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in BeanDefinition defined in class path resource [shangbo/springbatch/example1/EndOfJob.xml]]七月 13, 2017 9:05:57 下午 org.springframework.batch.core.repository.support.JobRepositoryFactoryBean afterPropertiesSet信息: No database type set, using meta data indicating: ORACLE七月 13, 2017 9:05:57 下午 org.springframework.batch.core.launch.support.SimpleJobLauncher afterPropertiesSet信息: No TaskExecutor has been set, defaulting to synchronous executor.Exception in thread "main" org.springframework.batch.core.repository.JobInstanceAlreadyCompleteException: A job instance already exists and is complete for parameters={business_date=20170505}.  If you want to run this job again, change the parameters.	at org.springframework.batch.core.repository.support.SimpleJobRepository.createJobExecution(SimpleJobRepository.java:126)	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)	at java.lang.reflect.Method.invoke(Method.java:497)	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:98)	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:262)	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95)	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)	at org.springframework.batch.core.repository.support.AbstractJobRepositoryFactoryBean$1.invoke(AbstractJobRepositoryFactoryBean.java:172)	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)	at com.sun.proxy.$Proxy4.createJobExecution(Unknown Source)	at org.springframework.batch.core.launch.support.SimpleJobLauncher.run(SimpleJobLauncher.java:125)	at shangbo.springbatch.example1.App.main(App.java:29)

为什么会错呢?别着急你很快就会知道。

– 声 明:转载请注明出处
– Last Updated on 2017-07-13
– Written by ShangBo on 2017-07-13
– End

你可能感兴趣的文章
简单Linux C线程池
查看>>
内存池
查看>>
输入设备节点自动生成
查看>>
GNU hello代码分析
查看>>
Qt继电器控制板代码
查看>>
wpa_supplicant控制脚本
查看>>
gstreamer相关工具集合
查看>>
RS232 四入四出模块控制代码
查看>>
linux 驱动开发 头文件
查看>>
container_of()传入结构体中的成员,返回该结构体的首地址
查看>>
ipconfig,ifconfig,iwconfig
查看>>
opensuse12.2 PL2303 minicom
查看>>
网络视频服务器移植
查看>>
Encoding Schemes
查看>>
移植QT
查看>>
如此调用
查看>>
计算机的发展史
查看>>
带WiringPi库的交叉编译如何处理一
查看>>
带WiringPi库的交叉笔译如何处理二之软链接概念
查看>>
Spring事务的七种传播行为
查看>>