@Asynchronous JEE6 funktioniert nicht

Diskutiere @Asynchronous JEE6 funktioniert nicht im Application Tier Forum; Habe eine EJB (stateful) mit einer service-Methode, die ganz simpel per jsf commandButton aufgerufen wird. Soweit so gut. wenn ich da nun...

  1. JanHH
    JanHH Mitglied
    Habe eine EJB (stateful) mit einer service-Methode, die ganz simpel per jsf commandButton aufgerufen wird. Soweit so gut.

    wenn ich da nun @Asynchronous drüber schreibe, sollte es doch eigentlich so sein, dass JSF sofort nach Button-click die nächste Seite anzeigt und die Service-Methode unabhängig davon in einem eigenen Thread im Hintergrund ausgeführt wird, oder?

    Ist aber nicht der Fall. JSF wartet bist die Methode abgearbeitet ist und zeigt erst dann die nächste Seite an, also ganz normal synchron in einem Thread.

    Was übersehe ich da?

    (Jboss 7.1.1)
     
  2. Vielleicht hilft dir dieser Java-Kurs hier weiter --> (hier klicken)
  3. stg
    stg Bekanntes Mitglied
    Die EJB Annotation greifen nur,wenn du die Methoden auch durchs Framework hindurch aufrufst.

    Was bei dir genau schief läuft ist ohne Code schwer zu sagen. Was ich aber in deine Frage hinein-interpretiere ist, dass du deine EJB direkt aus der JSF View heraus ansteuerst, du sie also zusätzlich auch als Backing Bean für deine VIew verwendest. Du hast sie daher vermutlich auch als JSF Managed Bean oder CDI Named Bean annotiert, richtig? Mach so was einfach nicht, sondern trenne klar die Schichten deiner Anwendung, dann hast du solche Probleme auch nicht.
    Also CDI (oder JSF Managed Bean) als Backing für deine View. Aus der JSF View heraus rufst du deine Action method aus der Backing Bean auf. Die Backing Bean injiziert die EJB und delegiert den Aufruf an die @Asyncronous method aus der EJB.
     
  4. JanHH
    JanHH Mitglied
    Soll man das nicht so machen? Das wäre mir eigentlich neu.
     
  5. stg
    stg Bekanntes Mitglied
    Was man wie machen soll oder nicht ist nicht die richtige Frage, da scheiden sich die Geister ja grundsätzlich, sobald es mehr als eine Möglichkeit gibt.

    Vielleicht funktioniert es ja sogar so, wie du es machen willst und das Problem liegt ganz woanders. Wenn du einfach mal ein Minimalbeispiel postest, dann kann man da ggfls mehr zu sagen.

    Erfahrungsgemäß treten viele Probleme aber gar nicht erst auf, wenn man sauber die Verantwortlichkeiten trennt.
     
  6. JanHH
    JanHH Mitglied
    <h:commandButton action="#{myBean.doSomething}" />

    ...

    @Asynchronous
    public void doSomething()
    {
    System.out.println("vorher");
    do_something(); // dauert diverse Sekunden
    System.out.println("nachhher");
    }

    Die JSF-Seite wird erst nachdem "nachher" auf der Konsole erscheint aktualisiert.
     
Die Seite wird geladen...

@Asynchronous JEE6 funktioniert nicht - Ähnliche Themen

@Asynchronous funktioniert nicht
@Asynchronous funktioniert nicht im Forum Application Tier
JSF/JEE6 asynchronie Statusmeldungen per ajax
JSF/JEE6 asynchronie Statusmeldungen per ajax im Forum Web Tier
EAR in JEE6
EAR in JEE6 im Forum Allgemeines EE
paar Fragen zu JSF2/JEE6 Anwendung mit JBoss 7.1.1
paar Fragen zu JSF2/JEE6 Anwendung mit JBoss 7.1.1 im Forum Allgemeines EE
Reflection in JEE6
Reflection in JEE6 im Forum Allgemeines EE
Thema: @Asynchronous JEE6 funktioniert nicht