Seam 2.2,Jboss 6.1,hibernate 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()呢?