Java Batch とは ?

Java Batch の起動方法

JobOperator job = BatchRuntime.getJobOperator();
long id = job.start("sample-job", null);

job.start(xml, properties)

xmlMETA-INF/batch-jobs/ 以下にある JOB 定義 XML ファイル名
properties実行時のパラメータ (cf.Glassfish jBatch Parameter)

返り値は Job Execution 番号


jbatch.png
package com.mycompany.jbatchexam;

import java.io.IOException;
import java.io.PrintWriter;
import javax.batch.operations.JobOperator;
import javax.batch.runtime.BatchRuntime;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(name = "BatchEntry", urlPatterns = {"/BatchEntry"})
public class BatchEntry extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        try (PrintWriter out = response.getWriter()) {
            out.println("<!DOCTYPE html>");
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet BatchEntry</title>");
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Servlet BatchEntry at " + request.getContextPath() + "</h1>");

            JobOperator job = BatchRuntime.getJobOperator();

            System.out.println("Batch Start");
            long id = job.start("sample-job", null);
            System.out.println("Batch Queued " +id);
            out.println("Task Queued. No." + id);
            
            out.println("</body>");
            out.println("</html>");
        }
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    @Override
    public String getServletInfo() {
        return "Short description";
    }
}

Job

META-INF/batch-jobs/ 内の XML ファイルで定義する。JSL(Job Specification Language)

<?xml version="1.0" encoding="UTF-8"?>
<job id="sample-job"
     xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
     version="1.0">

    <step id="sample-chunk" next="sample-batchlet">
        <chunk item-count="5">
            <reader    ref="MyItemReader"/>
            <processor ref="MyItemProcessor"/>
            <writer    ref="MyItemWriter"/>
        </chunk>
    </step>

    <step id="sample-batchlet">
        <batchlet ref="MyBatchlet"/>
    </step>
</job>

Chunk

Batchlet

実行結果

情報:   Batch Start
情報:   Batch Queued 11
情報:   MyItermReader#open
情報:   MyItemWriter#open
情報:   MyItermReader#readItem 1
情報:   MyItemProcessor#processItem 1
情報:   MyItermReader#readItem 2
情報:   MyItemProcessor#processItem 2
情報:   MyItermReader#readItem 3
情報:   MyItemProcessor#processItem 3
情報:   MyItermReader#readItem 4
情報:   MyItemProcessor#processItem 4
情報:   MyItermReader#readItem 5
情報:   MyItemProcessor#processItem 5
情報:   MyItemWriter#writeItems [P1, P2, P3, P4, P5]
情報:   MyItermReader#checkpointInfo
情報:   MyItemWriter#checkpointInfo
情報:   MyItermReader#readItem 6
情報:   MyItemProcessor#processItem 6
情報:   MyItermReader#readItem 7
情報:   MyItemProcessor#processItem 7
情報:   MyItermReader#readItem 8
情報:   MyItemProcessor#processItem 8
情報:   MyItermReader#readItem 9
情報:   MyItemProcessor#processItem 9
情報:   MyItermReader#readItem 10
情報:   MyItemProcessor#processItem 10
情報:   MyItemWriter#writeItems [P6, P7, P8, P9, P10]
情報:   MyItermReader#checkpointInfo
情報:   MyItemWriter#checkpointInfo
情報:   MyItermReader#readItem 11
情報:   MyItemProcessor#processItem 11
情報:   MyItermReader#readItem 12
情報:   MyItemProcessor#processItem 12
情報:   MyItermReader#readItem 13
情報:   MyItemProcessor#processItem 13
情報:   MyItemWriter#writeItems [P11, P12, P13]
情報:   MyItermReader#checkpointInfo
情報:   MyItemWriter#checkpointInfo
情報:   MyItermReader#close
情報:   MyItemWriter#close
情報:   MyBatchlet#process
情報:   ***** The treasure map is here ! ****

Glassfish で、JOB の状態を管理する

gs.png

アプリケーションから JOB の状態を管理する


Java#Glassfish


添付ファイル: filegs.png 348件 [詳細] filejbatch.png 346件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS   sitemap
Last-modified: 2014-05-24 (土) 22:57:31 (926d)
ISBN10
ISBN13
9784061426061