Seam 2.2, Jboss 6.1, Winterschlaf 3.5.6 und MSQL Server 2008Hibernate Lock Tabelle
und haben eine Funktion wie diese.
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();
}
Ich habe eine Umfrage auf checkJobb alle 10 Sekunden so, wenn die deliveryFile() Funktion ausgeführt wird.
Die checkJobb-Warteschlangen upp und enden bei der Abfrage. Wenn die deliveryFile() -Funktionen beendet sind, werden alle 6 checkJobbs() gleichzeitig beendet.
Auch wenn ich direkt aus der Datenbank auswähle, ist es gesperrt und beendet die Abfrage, nachdem deliveryFile() fertig ist.
Gibt es sowieso, um dies zu lösen, so kann ich meine checkJobb() tun, während DeliveryFile ausgeführt wird?
Ich möchte in der Lage sein, in die Datenbank zu wählen, während die Funktion deliverFile() ausgeführt wird, aber es sperrt die Datenbank, so dass ich überhaupt keine Abfragen ausführen kann. Sie werden ausgesetzt, bis deliverFile beendet ist. – Trind