首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于Spring Batch

关于Spring Batch
EN

Stack Overflow用户
提问于 2013-07-23 15:49:56
回答 2查看 1.3K关注 0票数 0

我是Spring Batch的新手。我只是尝试运行一个简单的spring batch示例,它是我在vain.The示例中从net获得的,只是尝试从一个平面文件中读取内容,并将内容写入到一个单独的平面文件中。

下面是我的xml,它被加载到上下文中(通过ContextLoaderListener)。

test-batch.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://172.18.7.57/spring-beans.dtd">

<beans>
<bean id="simpleJob"
class="org.springframework.batch.core.job.SimpleJo b">
<property name="name" value="simpleJob" />
<property name="steps">
<list>
<ref local="step" />
</list>
</property>
<property name="jobRepository" ref="jobRepository" />
</bean>

<bean id="jobLauncher"
class="org.springframework.batch.core.launch.suppo rt.SimpleJobLauncher">
<property name="jobRepository" ref="jobRepository" />
</bean>

<bean id="jobRepository"
class="org.springframework.batch.core.repository.s upport.SimpleJobRepository">
<constructor-arg>
<bean
class="org.springframework.batch.core.repository.d ao.MapJobInstanceDao" />
</constructor-arg>
<constructor-arg>
<bean
class="org.springframework.batch.core.repository.d ao.MapJobExecutionDao" />
</constructor-arg>
<constructor-arg>
<bean
class="org.springframework.batch.core.repository.d ao.MapStepExecutionDao" />
</constructor-arg>
</bean>


<bean id="transactionManager"
class="org.springframework.batch.support.transacti on.ResourcelessTransactionManager" />

<bean id="step"
class="org.springframework.batch.core.step.item.Si mpleStepFactoryBean">
<property name="transactionManager" ref="transactionManager" />
<property name="jobRepository" ref="jobRepository" />
<property name="itemReader" ref="itemReader" />
<property name="itemWriter" ref="itemWriter" />
</bean>


<bean id="lineAggregator"
class="org.springframework.batch.item.file.transfo rm.DelimitedLineAggregator">
<property name="delimiter" value="|" />
</bean>

<bean id="itemWriter"
class="org.springframework.batch.item.file.FlatFil eItemWriter">
<property name="fieldSetCreator" ref="fieldSetMapper" />
<property name="lineAggregator" ref="lineAggregator" />
<property name="resource" value="file:/hello2.txt" />
</bean>

<bean id="lineTokenizer"
class="org.springframework.batch.item.file.transfo rm.DelimitedLineTokenizer" />

<bean id="fieldSetMapper"
class="org.springframework.batch.item.file.mapping .PassThroughFieldSetMapper" />

<bean id="itemReader"
class="org.springframework.batch.item.file.FlatFil eItemReader">
<property name="resource" value="file:/hello1.txt" />
<property name="lineTokenizer" ref="lineTokenizer" />
<property name="fieldSetMapper" ref="fieldSetMapper" />
</bean>
</beans>

因为我没有maven,所以我试着从我的java代码启动这个任务,比如

代码语言:javascript
复制
ApplicationContext context = new FileSystemXmlApplicationContext("D:\\jboss-4.0.5.GA\\server\\default\\deploy\\test.war\\WEB-INF\\xml\\test-batch.xml");

Job job;

job = (Job) context.getBean("simpleJob");
JobParameters jobParameters = jobParametersConverter.getJobParameters(StringUtils
.splitArrayElementsIntoProperties(new String[]{"D:\\jboss-4.0.5.GA\\server\\default\\deploy\\venki.war\\WEB-INF\\xml\\venki-batch.xml","simpleJob"}, "="));

JobExecution jobExecution = launcher.run(job, jobParameters);

--但是,在eclipse中抛出了一些错误,说没有类加载器found....below是我得到的错误……

代码语言:javascript
复制
org.apache.commons.lang.SerializationException: java.lang.ClassNotFoundException: No ClassLoaders found for: org.springframework.batch.core.JobExecution
    at org.apache.commons.lang.SerializationUtils.deseria lize(SerializationUtils.java:164)
    at org.apache.commons.lang.SerializationUtils.deseria lize(SerializationUtils.java:191)
    at org.springframework.batch.core.repository.dao.MapJ obExecutionDao.copy(MapJobExecutionDao.java:33)
    at org.springframework.batch.core.repository.dao.MapJ obExecutionDao.saveJobExecution(MapJobExecutionDao .java:56)
    at org.springframework.batch.core.repository.support. SimpleJobRepository.saveOrUpdate(SimpleJobReposito ry.java:216)
    at org.springframework.batch.core.repository.support. SimpleJobRepository.createJobExecution(SimpleJobRe pository.java:192)
    at org.springframework.batch.core.launch.support.Simp leJobLauncher.run(SimpleJobLauncher.java:79)
    at com.venki.handler.TestHandler.testSpringBatch(Test Handler.java:111)

--请在这方面帮助我……我需要找出一个从平面文件中读取并插入到DB中的代码……我需要将其集成到一个独立的模块中,我不应该使用maven...

EN

回答 2

Stack Overflow用户

发布于 2013-07-23 20:00:48

为什么不使用org.springframework.batch.core.launch.support.CommandLineJobRunner来运行它呢

您可以在eclise的Run Configuration中将其定义为您的主类。

在参数中给出

代码语言:javascript
复制
<your batch-job-xml-file><space><your Job (in your case its simpleJob)>

你在这里也不需要maven。只需设置所需库的类路径即可。

票数 0
EN

Stack Overflow用户

发布于 2013-07-23 20:48:21

示例Spring Batch足球项目使用JDBC从CSV文件读取并写入数据库。

您可以找到详细信息here,下载链接位于该页面的顶部。

就Maven而言,您不需要它,但您必须手动在类路径中包含所有必需的库。如果您正在通过Eclipse运行它,则触发CommandLineJobRunner

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17804361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档