[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 メーリングリストの案内