Hallo!
Ich baue gerade eine JavaEE 6 Application auf Glassfish 3.01, welche grundsätzlich folgende Funktionalität bieten soll. Ein zentraler Singleton übernimmt die Aufgabe eines Schedulers. Das heißt, dieser Singleton prüft zu jeder Minute eine Liste von Tasks und fragt diese, ob sie ausgeführt werden wollen oder nicht (die Tasks wissen das anhand einer internen Logik). Soweit so gut.
Nun suche ich nach einem Pattern, welches mir eine Möglichkeit bietet, diese Tasks am zentralen Scheduler zu registrieren (dieser trägt sie dann in eine Liste ein und schaut wie oben beschrieben jede Minute mal nach den Wünschen der Tasks).
Der für mich einfachste Ansatz wäre nun, alle Tasks mit
zu annotieren und diese in einer
Methode die Registrierung am Scheduler durchführen zu lassen. Das läuft grundsätzlich gut - allerdings nur so lange bis einer dieser Task und damit der Singleton mit einer entsprechenden Exception stirbt.
Ich hätte nun also gerne einen neuen Ansatz mit dem ich
Session Beans oder was ähnliches geeignetes an meinem Scheduler registrieren kann. Ich hätte nur gerne eine etwas elegantere Methode als den direkten Aufruf mit z.B.
Die Lösung sollte also einen neuen Task registrieren können, ohne dass dazu jedes mal der Scheduler verändert werden muss.
Wie würdet ihr das lösen?
Vielen Dank im Voraus für Eure Inspiration!
Best Grüße,
t3chris
Ich baue gerade eine JavaEE 6 Application auf Glassfish 3.01, welche grundsätzlich folgende Funktionalität bieten soll. Ein zentraler Singleton übernimmt die Aufgabe eines Schedulers. Das heißt, dieser Singleton prüft zu jeder Minute eine Liste von Tasks und fragt diese, ob sie ausgeführt werden wollen oder nicht (die Tasks wissen das anhand einer internen Logik). Soweit so gut.
Nun suche ich nach einem Pattern, welches mir eine Möglichkeit bietet, diese Tasks am zentralen Scheduler zu registrieren (dieser trägt sie dann in eine Liste ein und schaut wie oben beschrieben jede Minute mal nach den Wünschen der Tasks).
Der für mich einfachste Ansatz wäre nun, alle Tasks mit
Code:
@Singleton
Code:
@PostConstruct
Ich hätte nun also gerne einen neuen Ansatz mit dem ich
Code:
@Stateless
Java:
@EJB
TaskLocal task1;
@EJB
OtherTaskLocal task2;
private List<Task> scheduleList;
@PostConstruct
private void init() {
scheduleList = new ...
scheduleList.add(task1);
scheduleList.add(task2);
}
Die Lösung sollte also einen neuen Task registrieren können, ohne dass dazu jedes mal der Scheduler verändert werden muss.
Wie würdet ihr das lösen?
Vielen Dank im Voraus für Eure Inspiration!
Best Grüße,
t3chris