フォーラム: 公開討議 (スレッド #21997)

【バッチFW】ジョブ終了制御の設定について (2009-03-11 12:47 by 匿名 #42482)

ジョブ終了制御がうまく動かないのでアドバイスをいただけませんでしょうか。

バッチFWのバージョンは2.0.1.0で、チャンク別トランザクションモデルを使用しています。
以下の状況で、実行中に終了ファイル監視フォルダに
JB0002.end や JB0002.irp を配置しましたが反応が無いようです。
ちなみに配置したファイルは0バイトです。
設定の不備などありましたらご指摘いただけたらと思います。よろしくお願いします。

【bean定義ファイルより】
<bean id="endFileChecker" class="jp.terasoluna.fw.batch.init.EndFileChecker">
<property name="endFileDir" value="C:/workspace/batch/batchapps/endfiledir"/>
</bean>
<bean id="scheduledTask" class="org.springframework.scheduling.timer.ScheduledTimerTask">
<property name="period" value="8000"/>
<property name="timerTask" ref="endFileChecker"/>
</bean>

【ログより】
[EndFileChecker] [INFO ] End File Directory : C:\workspace\batch\batchapps\endfiledir
[JobManager] [INFO ] Job processing START: [jobId=JB0002] [jobRequestNo=] [partitionNo=-1] [partitionKey=NO_Partition] [JobManagerName=chunkTransactionJobManager] [JobState=STARTED]

メッセージ #42482 への返信×

Wiki文法は使えません
ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。 ログインする

RE: 【バッチFW】ジョブ終了制御の設定について (2009-03-11 14:58 by kuramotoki #42494)

いただいた設定を確認させていただきましたが、特に問題となる部分は
見当たりません。
当方の環境にて動作確認いたしましたが、停止しました。
以下が当方で検証した設定になります。
===
<!-- ジョブ終了ファイルチェッククラス -->
<bean id="endFileChecker" class="jp.terasoluna.fw.batch.init.EndFileChecker">
<property name="endFileDir" value="C:/workspace/batch/batchapps/endfiledir" />
</bean>

<!-- タスクの定義(実行間隔) -->
<bean id="scheduledTask" class="org.springframework.scheduling.timer.ScheduledTimerTask">
<!-- 8秒ごとにセット -->
<property name="period" value="8000" />
<property name="timerTask" ref="endFileChecker" />
</bean>

<!-- タイマーにタスクを登録 -->
<bean id="timerFactory" class="org.springframework.scheduling.timer.TimerFactoryBean">
<property name="daemon" value="false" />
<property name="scheduledTimerTasks">
<list>
<ref bean="scheduledTask" />
</list>
</property>
</bean>
===

ジョブ管理機能がうまく働かないとすれば、ビジネスロジックの内部で
処理が止まっている可能性があります。
機能説明書より抜粋しますと
---BE-03 ジョブ実行管理機能 P8
強制終了ができない場合について
強制終了は、フレームワークがスレッドに対する割り込みを検知することで実現されている。
したがって、以下のような場合には強制終了によってジョブを終了させることができない。
・アプリケーションのメソッドが実行を続けている場合
(無限ループを実行しているなど)
・アプリケーションでデッドロックが発生し、実行が止まっている場合
---
となります。
内部では、対象データ1件の処理が終了したタイミングで、ジョブステータスを確認し、
終了ファイルを検知した状態のステータスになっていれば処理を終了する、という
流れをとっているためです。

ビジネスロジックに問題が無いかご確認をお願いいたします。
#42482 への返信

メッセージ #42494 への返信×

Wiki文法は使えません
ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。 ログインする

RE: 【バッチFW】ジョブ終了制御の設定について (2009-03-11 16:59 by 匿名 #42497)

kuramotokiさん、ご教示ありがとうございます。

私の環境で動作しない原因がわかりました。
終了ファイルの設定を、ジョブBean定義ファイルに設定を記述していたことが原因でした。

ログをよく見ると、
[EndFileChecker] [INFO ] End File Directory : デフォルトBean定義ファイル(DefaultValueBean.xml)に記述したパス
[EndFileChecker] [INFO ] End File Directory : ジョブBean定義ファイル(JB0002.xml)に記述したパス
となっており、
前者のパスに終了ファイルを配置したら動作しました。
そもそも、ジョブBean定義ファイルに記述すること自体、誤りのようです。

仕様の理解不足からお騒がせしてしまい、すみませんでした。
#42494 への返信

メッセージ #42497 への返信×

Wiki文法は使えません
ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。 ログインする

RE: 【バッチFW】ジョブ終了制御の設定について (2009-03-11 17:45 by kuramotoki #42501)

ドキュメントや仕様については、今後改善を検討していきたいとおもいます。
以上、よろしくお願いいたします。
#42497 への返信

メッセージ #42501 への返信×

Wiki文法は使えません
ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。 ログインする