Automatische EJB Timer auf Glassfish Server nicht auslösen
So, ich bin mit einem Java-OHR-Anwendung auf einem Glassfish 3.1. Ich erstellte eine stateless session bean mit einem einzigen kommentierte timer-Funktion in meinem EJB-Modul. Ich habe nicht den genauen code, aber es sieht ungefähr so aus:
@Stateless
public class SessionTimerBean {
public SessionTimerBean(){
System.out.println("Constructor Called");
}
@Schedule(second="*/10", minute="*", hour="*")
public void scheduleTimer(final Timer t) {
System.out.println("Timer Called");
}
}
Beim starten von Glassfish die debug-info scheint zu zeigen, dass es erkennt die EJB-timer Anmerkungen und der Konstruktor-Methode der bean nicht aufgerufen beim Start. Aber die timer-Methode selbst nie scheint an einer beliebigen Stelle ausgelöst.
Hat sonst noch jemand dieses Problem gehabt? Gibt es eine andere Konfiguration, die ich bin fehlt?
Vielen Dank im Voraus.
Macht es einen diff-u entfernen Sie die parameter aus der Methode?
ich würde auch schauen, dass die Importe richtig javax.ejb.Timer etc..
Viel Glück mit, dass? Selbes problem hier, keine Methode, params
Verwendet werden, um ähnlichen Problem finden Sie unter: stackoverflow.com/questions/13292473/...
ich würde auch schauen, dass die Importe richtig javax.ejb.Timer etc..
Viel Glück mit, dass? Selbes problem hier, keine Methode, params
Verwendet werden, um ähnlichen Problem finden Sie unter: stackoverflow.com/questions/13292473/...
InformationsquelleAutor jamespdlynn | 2012-10-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Unten Timer-code funktioniert in glassfish 3.1.2
aber gestopt zu arbeiten, wenn ich entfernt die
So in den server-log fand ich:
Also änderte ich die "keep-state" auf false. Ich bin kein Experte, was es auch tut, aber ändern auf false gemacht, die timer-arbeiten ohne persistent=false
Änderte ich es in folgenden Dateien
glassfish-ejb.xml:
glassfish-application.xml
Es ist erwähnenswert, dass je nach Anwendung, kann es besser sein, die Einstellung persistent=false, so halten keep-state=true. In diesem Fall web-Sitzungen, Sitzungs-EJB-Instanzen und dauerhaft angelegt EJB-Timer können beibehalten werden, zwischen re-Bereitstellungen. docs.oracle.com/cd/E18930_01/html/821-2417/gkhtr.html
InformationsquelleAutor Aksel Willgert
Laut spec, Timer sind persistent durch Konvention:
Aksel gezeigt, wie hartnäckig garantiert werden kann, deaktiviert. Der glassfish-server verwendet eine Standard-Datenbank zum speichern Ihrer Timer (werfen Sie einen Blick hier). Ich könnte mir vorstellen, dass es nicht läuft und weil der, dass der Timer nicht funktioniert. Verwenden Sie den folgenden Befehl, um es zu starten:
InformationsquelleAutor Roland Tiefenbrunner
Ich laufen in das gleiche Problem als ich nach einem tutorial. Ich war mit Glassfish 4.1 (Java ee 7-Implementierung). Ich war immer die gleichen Fehler
Ich gerade erstellt eine Dynamische Web-Modul. Nicht ein EAR-Projekt mit einem EJB-Modul.
Nach den oben genannten Antworten, die ich zuerst änderte sich mein @Schedule() annotation durch einfügen der
persistent=false
attribut wie soDann ging ich zu meinem glasshish-web.xml deployment-Deskriptor und ich Stelle die folgende Konfiguration
<keep-state>false</keep-state>
in dem Abschnitt etwa so:InformationsquelleAutor Elom Atsou Agboka