[Seasar-user:15015] JdbcManagerのIterationCallbackについて
Satoru Ogura
[E-MAIL ADDRESS DELETED]
2008年 7月 12日 (土) 12:58:30 JST
小椋と申します。
JdbcManagerのIterationCallbackを使用して、100万件のデータを
夜間バッチで処理しております。
先日、処理中に停電が発生し、UPSからサーバーがシャットダウンされたのですが、
先に接続先のDBサーバーがシャットダウンされました。
その結果、callback関数は途中で処理が中断されましたが、外側の処理には
例外がthrowされず、IterationCallbackが正常に終了したものとして
処理を継続してしまいました。
現状は処理前にデータ件数を取得し、読み込んだ件数をカウントして
最終処理前に件数チェックをしてIterationCallbackが正常終了したか確認しています。
初歩的な質問かもしれませんが
callback関数の例外を外に通知するにはどのようにすればいいでしょうか?
try {
List<DBuhinCheck> updateBuhinList = new ArrayList<DBuhinCheck>();
updateBuhinList = jdbcManager.from(VewBuhin2.class).iterate(new IterationCallback<VewBuhin2, List<DBuhinCheck>>() {
private List<DBuhinCheck> updateBuhinList = new ArrayList<DBuhinCheck>();
public List<DBuhinCheck> iterate(VewBuhin2 vewBuhin2, IterationContext context) {
// データを読み込んで、updateBuhinListに結果を返す
// その他処理.....
return updateBuhinList;
}
});
// updateBuhinList の内容で処理
// ここの処理が動作したため、データがおかしくなった
if (updateBuhinList.size() != 0) {
// 別のDBサーバーへデータを書き込み
}
} catch (Exception e) {
throw e;
}
環境
seasar 2.4.25
os:Red Hat Enterprise Linux AS Version4
tomcat:5.5.25
jdk:1.5.0.13
jdbcDriver jtds 1.2.2
外部接続サーバーSQL Server 2000
以上、よろしくお願い致します。
Seasar-user メーリングリストの案内