シェアする

  • このエントリーをはてなブックマークに追加





【jbatch】【step-partitioning】batch propertyにObjectは渡せない!?

シェアする

  • このエントリーをはてなブックマークに追加
  • 0

少し前に引き続きjbatchものです。

今、jbatchを用いたFWのようなもの、要するに

実装者が楽に開発できるような基板部を作成しているのですが、

そこで、前回前々回と書いているとおり、

scope-partitionを利用したバッチの並列処理の基盤を

設計・実装していたのですが、

当然できるよね?と思っていたことが仕様上、

できないことがわかったので記事にしてみました。

Mapper→partitionへのデータ受け渡し

普通に考えたら、MapperでデータSelectして、

その件数で動的にpartitionの数を決めると。

ここまではOK。

じゃ、次は個々のpartitionが処理するデータを

元データから分割して渡そうと思いますよね。

こんな感じ。

さて、これをbatchletで受け取ろうかな。

こんな感じで受けとろうとしました。

とれないよ??

驚きでした。

@BatchPropertyでInjectした

inputDataはnullでinjectされません。

jbatchはwildfly上で動かしているので、実装はjberetなのですが・・・

Stirngしか許容してない!!

jberetのgithubのソースのl413にて

Map.Entry<String,String>って書いてるーー!

そっか、Stringした許容していなんだ。

JSR325の仕様書にも

そんな感じの記述が・・・。

こちら

14P目の7.1.2 JobParametersの項で

「 Job parameters are keyword/value string pairs」

Oh No.

パラメータはキーと値をStirngのペアです。

はい、すいません。。。

それでは、どうする?

Stringしか渡せない、でもObjectを渡したい

それなら、jsonでしょー。

ということで、jsonライブラリjacksonを使用して

データ分割部を以下のように変更!

これを受けるときは・・・

以下のようにしてjsonからEntityに戻してあげればいいですね。

まとめ

Mapperからpartitionにデータを渡す方法についてお話しました。

まぁ、平たく言えば、仕様がどうであってもなんとかなるよねー。

というお話でした。それでは!

ブログランキング・にほんブログ村へ
にほんブログ村


人気ブログランキング

20代前半までは東京で音楽をやりながら両手の指以上の業種でアルバイト生活をしていましたが、某大手プロバイダのテレアポのバイトでPCの知識の無さに愕然とし、コンピュータをもっと知りたい!と思ったことをきっかけに25歳の時にITの世界に未経験で飛び込みました。
紆余曲折を経て、現在は個人事業主としてお仕事させていただいており、10年ほどになります。
web制作から企業システム構築、ツール開発など、フロントエンドもバックエンドもサーバーもDBAも依頼があれば何でもやってきた雑食系エンジニアです。

今風にいうとフルスタックエンジニアということになるのかしら??

→ 詳細プロフィールというか、生い立ちはこちら

→スキルシートをご覧になる場合はこちら

→お仕事のご依頼やお見積りなどお問い合わせはこちらから!

シェアする

  • このエントリーをはてなブックマークに追加

フォローはいかがですか?