Javaでバッチ

なんか「Java バッチ」で検索してくる人が結構多い。
昔書いたの(↓)は実行方法だけど、実装方法も書いておく。
id:matobat:20060308:1141793055
id:matobat:20060308:1141805874

実装方法

自分が使っているのはclwork(http://s2xwork.sandbox.seasar.org/)。
これはWebアプリでWebWork2をよく使うので、バッチの方も同じような感じで実行出来ないかと思って、自分で作った「XWorkをベースにしたコマンドラインアプリ用のフレームワーク
XWorkのActionクラスをコマンドラインから呼び出すベースのクラスを提供していて、これを使えばWebWork2で使っている処理をそのままコマンドラインから呼び出すことも出来る。
もちろんパラメータの指定も可能。後は指定した終了コードを出力するだけのResultを提供してるけど、もちろんログをメールで飛ばすResultとかを作ることも可能。

それにしてもXWorkはプレゼンテーション層に依存しないから以下の3つを作れば色んな形態から実行できてすごいと思う。

  • ActionProxyの呼び出し
  • パラメータの受け取り(ParameterInterceptorの前処理)
  • 結果処理を行うResult

使ったことはないけど、SwingやJMSからXWorkを利用するのもあるみたい。