Ersatz für Thread.sleep() in EJBs?

Diskutiere Ersatz für Thread.sleep() in EJBs? im Application Tier Bereich.
P

peez

Ich weiß, dass man in Stateless Session Beans keine sleeps verwenden soll. Der Grund leuchtet mir natürlich auch ein (Transaktionen, Thread-Management etc.).

Was wäre denn ein adäquater Ersatz für ein Sleep, wenn ich z.B. innerhalb einer Methode ein Fremdsystem mit einer Aktion beauftragen möchte, dieses z.B. in Zehn-sekunden-Abständen nach dem Status fragen und wenn es mit seiner Arbeit fertig ist, weiter im Programmablauf gehen möchte?

Also zum Beispiel sowas hier:
Java:
public class Bsp {
	public void doSomething() {

                //Irgendwas tun
		int a = 0;
		int b = 5*5;
		
                //Fremdsystem beauftragen
		fremdsystemClient.invokeTransferFile();
		
                //Mit 10 Sek. Pause immer wieder Status pollen
		while (fremdsystemClient.getTransferStatus() != FERTIG) {
			Thread.sleep(10000);
		}
		
                //Datei transferiert, weiter im Programm
		FileInputStream i = new FileInputStream(transferierteDatei);
	}
}
 
P

peez

Leider ist das Fremdsystem u.a. ein Webservice, d.h. wait/notify würde ich auf Anhieb sagen kommt nicht in Frage, da das Fremdsystem u.a. per Webservice aufgerufen wird, und nicht von sich aus über den Abschluss informieren kann.

Habe das jetzt mit Timer versucht, funktioniert auch, allerdings scheint er damit die Session / den Login zu verlieren.
Kann ich dem Timer evt. die aktuelle Usersession direkt mitgeben u. die dann beim Timeout wiederherstellen?
 
N

nillehammer

peez hat gesagt.:
Leider ist das Fremdsystem u.a. ein Webservice, d.h. wait/notify würde ich auf Anhieb sagen kommt nicht in Frage, da das Fremdsystem u.a. per Webservice aufgerufen wird, und nicht von sich aus über den Abschluss informieren kann.
Das Fremdsystem selbst natürlich nicht, aber bei synchronen Webserviceaufrufen kann die Klasse, mit der Du den Aufruf machst (fremdsystemClient), das tun, wenn das Ergebnis vorliegt.

Bei asynchronen Webservice-Aufrufen könnte der Callback-Handler das übernehmen.
 
Thema: 

Ersatz für Thread.sleep() in EJBs?

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben