如何通过单击 jsp 页面中的按钮来执行 spring 批处理作业?
How to execute a spring batch job by clicking on a button in a jsp page?
我是 spring 批处理和 spring Mvc 的新手,我希望批处理作业(从数据库中提取数据并将其写入另一个数据库)从jsp 页面通过点击一个按钮(或者 link 如果可能的话) 我正在使用 spring Mvc。这是我的工作配置:
<bean id="jobRepository"
class="org.springframework.batch.core.repository.support.JobRepositoryFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="transactionManager" ref="transactionManager" />
<property name="databaseType" value="oracle" />
</bean>
<bean id="itemReader"
class="org.springframework.batch.item.database.JdbcCursorItemReader"
scope="step">
<property name="dataSource" ref="dataSource" />
<property name="sql"
value="select id,name,qual from users" />
<property name="rowMapper">
<bean class="tn.com.spring.UserRowMapper" />
</property>
</bean>
<bean id="oracleitemWriter"
class="org.springframework.batch.item.database.JdbcBatchItemWriter">
<property name="dataSource" ref="dataSource" />
<property name="sql">
<value>
<![CDATA[
insert into users2(id,name,qual)
values (:id,:name,:qual)
]]>
</value>
</property>
<property name="itemSqlParameterSourceProvider">
<bean
class="org.springframework.batch.item.database.BeanPropertyItemSqlParameterSourceProvider" />
</property>
</bean>
<batch:job id="Job" job-repository="jobRepository">
<batch:step id="step1">
<batch:tasklet transaction-manager="transactionManager">
<batch:chunk reader="itemReader" writer="oracleitemWriter"
commit-interval=" 10">
</batch:chunk>
</batch:tasklet>
</batch:step>
</batch:job>
<jdbc:initialize-database data-source="dataSource">
<jdbc:script
location="org/springframework/batch/core/schema-drop-oracle10g.sql" />
<jdbc:script location="org/springframework/batch/core/schema-oracle10g.sql" />
</jdbc:initialize-database>
这是我的工作控制器(我在网上找到了,但还是不行!)
@Component
@Controller()
public class JobController {
@Autowired
@Qualifier("JobLauncher")
private JobLauncher jobLauncher;
@Autowired
@Qualifier("Job")
private Job job;
@RequestMapping(value = "/job")
public void job() {
try {
JobExecution execution = jobLauncher.run(job, new JobParameters());
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
这是按钮
<form action=" <%=application.getContextPath()%>/job" method="get">
<input type="submit" value="execute My job" />
</form>
你能帮帮我吗?我的配置中缺少什么?
我很困惑 !
提前致谢。
作为这个问题的解决方案,我编写了这个 javascript 代码来调用作业的执行:
$(function() {
$('#JobBtn').click(function() {
$.get('${batchJobUrl}');
});
});
并且在 jsp 页面中,您需要指定在 javascript 代码中编写的按钮的 ID:
<input type="button" value="execute job " id='JobBtn' class="btn" />
希望对大家有所帮助..
我是 spring 批处理和 spring Mvc 的新手,我希望批处理作业(从数据库中提取数据并将其写入另一个数据库)从jsp 页面通过点击一个按钮(或者 link 如果可能的话) 我正在使用 spring Mvc。这是我的工作配置:
<bean id="jobRepository"
class="org.springframework.batch.core.repository.support.JobRepositoryFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="transactionManager" ref="transactionManager" />
<property name="databaseType" value="oracle" />
</bean>
<bean id="itemReader"
class="org.springframework.batch.item.database.JdbcCursorItemReader"
scope="step">
<property name="dataSource" ref="dataSource" />
<property name="sql"
value="select id,name,qual from users" />
<property name="rowMapper">
<bean class="tn.com.spring.UserRowMapper" />
</property>
</bean>
<bean id="oracleitemWriter"
class="org.springframework.batch.item.database.JdbcBatchItemWriter">
<property name="dataSource" ref="dataSource" />
<property name="sql">
<value>
<![CDATA[
insert into users2(id,name,qual)
values (:id,:name,:qual)
]]>
</value>
</property>
<property name="itemSqlParameterSourceProvider">
<bean
class="org.springframework.batch.item.database.BeanPropertyItemSqlParameterSourceProvider" />
</property>
</bean>
<batch:job id="Job" job-repository="jobRepository">
<batch:step id="step1">
<batch:tasklet transaction-manager="transactionManager">
<batch:chunk reader="itemReader" writer="oracleitemWriter"
commit-interval=" 10">
</batch:chunk>
</batch:tasklet>
</batch:step>
</batch:job>
<jdbc:initialize-database data-source="dataSource">
<jdbc:script
location="org/springframework/batch/core/schema-drop-oracle10g.sql" />
<jdbc:script location="org/springframework/batch/core/schema-oracle10g.sql" />
</jdbc:initialize-database>
这是我的工作控制器(我在网上找到了,但还是不行!)
@Component
@Controller()
public class JobController {
@Autowired
@Qualifier("JobLauncher")
private JobLauncher jobLauncher;
@Autowired
@Qualifier("Job")
private Job job;
@RequestMapping(value = "/job")
public void job() {
try {
JobExecution execution = jobLauncher.run(job, new JobParameters());
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
这是按钮
<form action=" <%=application.getContextPath()%>/job" method="get">
<input type="submit" value="execute My job" />
</form>
你能帮帮我吗?我的配置中缺少什么? 我很困惑 ! 提前致谢。
作为这个问题的解决方案,我编写了这个 javascript 代码来调用作业的执行:
$(function() {
$('#JobBtn').click(function() {
$.get('${batchJobUrl}');
});
});
并且在 jsp 页面中,您需要指定在 javascript 代码中编写的按钮的 ID:
<input type="button" value="execute job " id='JobBtn' class="btn" />
希望对大家有所帮助..