简介

    最近因为工作需要使用到spring batch框架的一些功能,spring batch是spring的一个批处理框架,一般用来处理大量数据转换的任务,而且这些业务逻辑对于用户交互方面的要求很低。所以这些任务大多是在后台运行的进程。但是对于每个批处理任务来说,它处理的任务情况,包括进度、里面失败的元素等等是我们所关心的。如果有一个可视化的工具可以来查看每个任务执行的情况这样对于验证批处理工作还是很有帮助的。实际上spring batch也提供了这么一个可视化的管理工具,叫做spring batch admin。这里,我们就详细的描述一下怎么在具体的应用里安装和配置它。 

 

安装

    spring batch admin是一个基于web的应用。我们可以将它当作一个普通的web应用。因此如果要运行它的话,必然要将它安装部署到一个web服务器上。所以安装它的第一步就需要安装和配置好一个服务器。目前常用的支持它的服务器包括有jetty, tomcat。这里以jetty为例,tomcat的配置也类似。

 

服务器安装配置

jetty

    jetty的下载路径如下:​​http://download.eclipse.org/jetty/​​ 目前最新版本的jetty是9.2.6。我们就选择这个版本,如下图:


spring batch admin的安装配置基础_spring

     在下载之后我们将他们解压到某个目录下就可以了。解压后它的目录结构如下:


spring batch admin的安装配置基础_mysql_02

     它的目录结构和tomcat服务器有点类似。我们一般写好的应用可以直接放到webapps目录下面进行部署。其中的demo-base目录提供了一个部署的示例,我们可以参考这个来部署自己的web应用包。它的安装很简单,这样整个的jetty服务器安装就完成了。在后面部署的时候我们还需要考虑到在webapps目录下的一些相关配置。

 

tomcat

    tomcat服务器的安装配置基本上和上述jetty的一样,我们首先去如下网站下载tomcat服务器:​​http://tomcat.apache.org/download-80.cgi​​,该下载页面如下图:


spring batch admin的安装配置基础_spring_03

 

     将tomcat服务器文件解压后,其目录结构如下:

 


spring batch admin的安装配置基础_服务器_04

    和jetty服务器一样,我们后面部署的时候都需要将生成的war包和配置文件放到其中的webapps目录下。 

 

spring batch admin下载和安装 

    spring batch admin的下载地址如下:​​http://docs.spring.io/downloads/nightly/release-download.php?project=BATCHADM​​ 

    下面是它的整个下载列表:


spring batch admin的安装配置基础_spring_05

     从图中可以看到,目前最新的版本是spring batch admin 1.3.0。我们可以选择下载这个版本。将spring batch admin解压到本地之后,它的目录结构如下:

 

 

spring batch admin的安装配置基础_服务器_06

     这里有一个sample的目录,我们可以直接使用这个来部署到服务器的环境中。所以剩下的工作就是需要编译sample工程并打成war包。在sample目录下面有spring-batch-admin-parent和spring-batch-admin-sample两个目录,我们需要首先编译spring-batch-admin-parent,然后再编译spring-batch-admin-sample。首先进入spring-batch-admin-parent目录,然后执行如下的编译命令:


  1. mvn install  


     要执行上述的命令需要安装编译和打包工具maven。关于maven的安装配置可以参考这篇​​文章​​。

    在执行完parent目录下的编译之后再进入spring-batch-admin-sample目录,执行编译命令:



  1. mvn install  


     编译结束后该目录下的内容如下:


spring batch admin的安装配置基础_spring_07

    在该目录下的target文件夹里有一个spring-batch-admin-sample-1.3.0.RELEASE.war文件,这就是我们编译后打好的包。

    现在我们将这个包拷贝到jetty服务器的webapps目录下。然后创建一个和war包同名的xml文件,在这里这个文件名为:spring-batch-admin-sample-1.3.0.RELEASE.xml。它的内容如下:



<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd">

<Configure class="org.eclipse.jetty.webapp.WebAppContext">

<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- Required minimal context configuration : -->
<!-- + contextPath -->
<!-- + war OR resourceBase -->
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<Set name="contextPath">/spring-batch-admin-sample-1.3.0.RELEASE</Set>
<Set name="war"><Property name="jetty.webapps" default="."/>/spring-batch-admin-sample-1.3.0.RELEASE.war</Set>


</Configure>


     这部分内容比较简单,它和tomcat服务器的部署一样,主要用来说明部署对应的包和通过web url访问的路径。

  现在我们通过如下命令启动jetty服务器:



  1. java -jar start.jar  


    如果我们需要启动tomcat服务器的话,则需要进入到tomcat服务器的bin目录下,执行如下命令:

    



  1. ./startup.sh   


 

     然后打开浏览器并输入如下的地址:http://localhost:8080/spring-batch-admin-sample-1.3.0.RELEASE/,我们将看到spring batch admin的启动界面:


spring batch admin的安装配置基础_服务器_08

 

    这个时候我们可以看到的是各种资源映射的信息,通过访问jobs, executions,也可以看到当前的job列表以及他们的执行情况。

  这样,一个基本的spring batch admin就安装好了。

 

配置修改

  前面对spring batch admin的安装用到了数据库,不过它默认的数据库是基于内存的hsql数据库。这样一旦我们将服务器停止了,数据库里面的数据也就丢失了。在实际的spring batch应用中,我们是需要将spring batch 的meta data保存在持久化的数据库里的,比如mysql, postgresql等。所以,我们需要修改配置,使用别的数据库。

   数据库的选择和配置比较简单,在spring batch admin的sample工程下面,如下目录:/spring-batch-admin-sample/src/main/resources

 

spring batch admin的安装配置基础_spring_09

   在这个目录下面有一个batch-default.properties文件。可以在这里设置默认的数据库连接信息,一个典型的连接mysql 数据库连接信息如下:



# Default placeholders for database platform independent features   
batch.remote.base.url=http://localhost:8080/spring-batch-admin-sample

# Non-platform dependent settings that you might like to change
# batch.job.configuration.file.dir=target/config

# for MySQL:
batch.jdbc.driver=com.mysql.jdbc.Driver
batch.jdbc.url=jdbc:mysql://localhost:3306/test
batch.jdbc.user=root
batch.jdbc.password=test
batch.jdbc.testWhileIdle=true
batch.jdbc.validationQuery=SELECT 1
batch.schema.script=classpath:/org/springframework/batch/core/schema-mysql.sql
batch.drop.script=classpath*:/org/springframework/batch/core/schema-drop-mysql.sql
batch.business.schema.script=classpath:/business-schema-mysql.sql
batch.database.incrementer.class=org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer


   修改完这个文件之后,因为访问的数据库变了,所以需要引用的数据库访问驱动也对应的发生了变化。我们可以通过修改sample工程的pom文件来引入对应的数据库访问驱动库。我们需要在该工程的pom.xml文件中添加如下的依赖项:



    1. <dependency>  
    2. <groupId>mysql</groupId>
    3. <artifactId>mysql-connector-java</artifactId>
    4. 5.1.25</version>
    5. </dependency>


      修改完上述地方之后,再执行maven编译命令: mvn install。我们将新编译后的包再部署到服务器。重启一下服务器之后,我们启动一个自定义的batch job,这个batch job的job repository所引用的数据源和我们这里spring batch admin配置的数据源一致。这个时候我们再启动spring batch admin,将看到启动的spring batch job信息和执行状态显示在spring batch admin页面中:

     

     

    spring batch admin的安装配置基础_mysql_10

     

         这样,spring batch admin的基本安装和配置就完成了