Java EE 7 のBatch を試してみる(その1)

今回は、Java EE7 の新機能であるBatchを試してみます。 新しい機能ですので、ゼロから全てを作成していくのは大変なので、まずは、開発環境(IDE)を準備しましょう。

以下の場所からダウンロードしてインストールしましょう。色々なバージョンを選ぶことが出来ますが、Java EE 7 の機能を試したい場合は、9.0.0以上のバージョンを選ぶようにしましょう。

 

www.jboss.org

 

JBoss Devloper Studio のインストールについては今回は割愛。

JBoss Developer Studioで開発(コンパイル等)をする際は、Java EE 7 関連のライブラリを参照する必要があります。というわけで、JBoss Developer Studioと同じマシン上に、JavaEE7 に対応したJBoss EAP 7もあわせてインストールしておくとその後の作業が楽です。

 

そもそもですが、jBatchってなんのためにあるのでしょうか。バッチ処理くらい今までもJavaで書いてきたし、Javaで適当なプログラムを書いてcronとかで呼び出せばいいじゃん、とそんな感じに思う人もいるかもしれません。がっ、考えてみれば、そういった工夫は、皆がそれぞれの方法で独自に編み出して、人の数だけ方言が出来上がっているとも言えます。こうした状況は、本当にバッチ処理に必要とされるエッセンスをまとめて、皆が使い易い形でフレームワークにしてしまえば、皆が幸せになれるんじゃないか、というところに起源があるようです。(ワタクシ調べ)

 

とにかく、Java EE7 の中で標準化されて、これを皆が使えるようになれば、そこで出来上がったバッチ処理のプログラムは、正確で、高性能で、読み易く、メンテナンス性が高く、ポータビリティの高いものとなるはずです。

 

というわけで、まずは、Batchというものを(これ以上は無いっていうくらい)超簡単に作ってみようと思います。

 

最初に言っておきますと、Java EE7 のBatchの作り方の基本は、以下のとおりです

  1. バッチ処理を行うJavaクラスを作成する(データ読み込み用、データ処理用、データ書き出し用、の3つ)
  2. 上でつくったJavaプログラムが実行される順序などを、別のジョブとしてXMLファイルに定義する。(このXMLファイルは「JOB XMLファイル」と言われたりします)
  3. ジョブを呼び出す(startさせる)入り口を作る(EBJでもJSPでもJAX-RSでもなんでも良いのです。規定もありません)
  4. 上を全部纏めて、WARファイルにパッケージングする
  5. WARファイルをJava EE7 対応のアプリケーションサーバーにデプロイして、ジョブの入り口を実行する(上でいうJSPとかEJBなど)

というだけなら簡単。でも実際にやってみると、なにをどこに置いたら良いのか分からない。だけど実際は、どこから作ったら良いのか分からないということだらけですよね。

 

ですので、今回は、いきなりゴールというか、「要するにこういう形のWARを作ればBatchは動かせる」というパッケージ構成をご紹介して、次回に続けようと思います。

--------------------------------------------------------
meta-inf/manifest.mf
meta-inf/
web-inf/
WEB-INF/classes/
WEB-INF/classes/META-INF/
WEB-INF/classes/META-INF/batch-jobs/
WEB-INF/classes/META-INF/batch-jobs/SimpleBatch.xml
WEB-INF/classes/mybatch/
WEB-INF/classes/mybatch/batchlet/
WEB-INF/classes/mybatch/batchlet/MyFirstBatchlet.class
WEB-INF/classes/mybatch/chunk/
WEB-INF/classes/mybatch/chunk/SimpleProcessor.class
WEB-INF/classes/mybatch/chunk/SimpleReader.class
WEB-INF/classes/mybatch/chunk/SimpleWriter.class
WEB-INF/lib/
WEB-INF/web.xml
startBatch.jsp
--------------------------------------------------------

案外、見慣れたパッケージの構成ではないでしょうか。赤、青、緑で色を付けてあるところが大切です。

赤色の「SimpleBatch.xml」というファイルが、どのような順序で処理が実行されるのか、というようなジョブの定義づけを行っている「JOB XMLファイル」です。ファイル名は任意です。ですが、配置場所はこのフォルダでなければなりません。

青色のクラスファイルバッチ処理の実体です。Batch用のインターフェースをimplementsして作りますが特に難しいところは無いと思います。

緑色のJSPは、ジョブを呼び出す(startさせる)、入口的な部分です。今回はJSPで作りますが、EJBでもServletでもなんでも良いです。

 

次回(が本当にあるのならば)は、(どちらもまだベータ版かもですが)JBoss Developer Studio 9.0.0 とJBoss EAP 7.0 を使って実際にBatchを作成して、動かしてみるということをやってみたいと思います。