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

Diskutiere Ersatz für Thread.sleep() in EJBs? im Application Tier Forum; Ich weiß, dass man in Stateless Session Beans keine sleeps verwenden soll. Der Grund leuchtet mir natürlich auch ein (Transaktionen,...

  1. peez
    peez Neues Mitglied
    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:
    Code (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);
        }
    }
     
  2. Vielleicht hilft dir dieser Kurs hier weiter --> (hier klicken)
  3. JimPanse
    JimPanse Neues Mitglied
  4. nillehammer
    nillehammer Guest
    Wait/Notify könnte auch noch eine Alternative sein.
     
  5. peez
    peez Neues Mitglied
    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?
     
  6. nillehammer
    nillehammer Guest
    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.
     
Die Seite wird geladen...

Ersatz für Thread.sleep() in EJBs? - Ähnliche Themen

docx4j - Ersatz für getJaxbElement
docx4j - Ersatz für getJaxbElement im Forum Allgemeine Java-Themen
ArrayList Integer Wrapper Klasse als Ersatz für normale Arrays
ArrayList Integer Wrapper Klasse als Ersatz für normale Arrays im Forum Java Basics - Anfänger-Themen
Ersatz für die veraltete Klasse XPath
Ersatz für die veraltete Klasse XPath im Forum XML und Co.
Sinus-Kurven als "Ersatz" für Graphen/Funktion finden
Sinus-Kurven als "Ersatz" für Graphen/Funktion finden im Forum Mathematik
Dropbox-Ersatz für Unternehmen gesucht
Dropbox-Ersatz für Unternehmen gesucht im Forum Plauderecke
Thema: Ersatz für Thread.sleep() in EJBs?