Java EE 7 のBatch を試してみる(その1)
今回は、Java EE7 の新機能であるBatchを試してみます。 新しい機能ですので、ゼロから全てを作成していくのは大変なので、まずは、開発環境(IDE)を準備しましょう。
以下の場所からダウンロードしてインストールしましょう。色々なバージョンを選ぶことが出来ますが、Java EE 7 の機能を試したい場合は、9.0.0以上のバージョンを選ぶようにしましょう。
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の作り方の基本は、以下のとおりです
- バッチ処理を行うJavaクラスを作成する(データ読み込み用、データ処理用、データ書き出し用、の3つ)
- 上でつくったJavaプログラムが実行される順序などを、別のジョブとしてXMLファイルに定義する。(このXMLファイルは「JOB XMLファイル」と言われたりします)
- ジョブを呼び出す(startさせる)入り口を作る(EBJでもJSPでもJAX-RSでもなんでも良いのです。規定もありません)
- 上を全部纏めて、WARファイルにパッケージングする
- 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を作成して、動かしてみるということをやってみたいと思います。