我有一种情况,用户在文件成功提交后上传新文件然后将一条记录插入数据库table.i将运行其他类,如果插入新记录则轮询数据库检索文件名然后读取文件并插入所有文件记录到数据库表。我不知道要解决这个问题,请帮助我并提供你对这种情况的看法。
由于
答案 0 :(得分:3)
好吧,您似乎想要一个定期检查表(例如TableA
)的Java类,并处理自上次检查时间以来插入的新记录。
如果之前是否轮询了记录,您至少应该有一个列(例如polled_time
)来捕获。 polled_time
是上次轮询记录的时间戳。如果以前从未对记录进行过轮询,则为null
。
每当Java类启动时,它应该选择未为进程(select * from TableA where polled_time is null
)轮询的记录。在处理完每条记录之后,您应该更新polled_time
以指示它已被轮询,并避免在下次运行Java类(update TableA set polled_time = now() where id= xxxxx
)时再次选择它进行处理。
最后,您必须setup a schedule task(对于Window平台)/ a cron job(对于Linux / Unix平台)定期运行此java类,
答案 1 :(得分:0)
为什么不能对同一个servlet doPost()执行这两个操作?或者删除Filename表,只有内容表并避免整个轮询情况?
doPost(...) {
try {
validateFile(...);
updateFileTable(...);
updateFilenameTable(...);
} catch (...) {...} finally {...}