Seam 2.2、Jboss 6.1、休眠 3.5.6 和 MSQL Server 2008
并具有这样的功能。
public void deliverFile() {
EntityManager jobbEntityManager = (EntityManager)Component.getInstance("jobbEntityManager");
JobbStatusInterface jobbStatus = new JobbStatus();
jobbStatus.setStatus(PluginStatus.INITIATED);
jobbEntityManager.persist(jobbStatus);
/**
Code here to save a file that takes a minutes
**/
jobbStatus.setStatus(PluginStatus.DONE);
jobbEntityManager.flush();
}
public void checkJobb(){
EntityManager jobbEntityManager = (EntityManager)Component.getInstance("jobbEntityManager");
jobbEntityManager.createQuery("from JobbStatus", JobbStatus.class).getResultList();
}
我每 10 秒对 checkJobb 进行一次投票,所以如果执行了 deliveryFile() 函数。
checkJobb 排队向上并在查询处停止,因此当 deliveryFile() 函数完成时,它会同时完成所有 6 个 checkJobbs()。
即使我直接从数据库中选择,它也会被锁定并在 DeliveryFile() 完成后完成它的查询。
有没有办法解决这个问题,所以我可以在 DeliveryFile 执行时执行我的 checkJobb() ?