2013-03-16 6 views

Antwort

6

Java Servlet 3.0 Maintenance Release auf Seite 34 liest:

Ein Aufruf dieser Methode - ServletRequest.startAsync(ServletRequest req, ServletResponse res) - stellt sicher, dass die Antwort nicht verpflichtet ist, wenn die Anwendung beendet aus dem Service-Methode. Es verpflichtet sich, wenn AsyncContext.complete auf dem zurück AsyncContext oder die AsyncContext mal aufgerufen wird, und es gibt keine Zuhörer zugeordnet die Zeit zu handhaben werden. Der Timer für async Auszeiten erst in der Anfrage starten und die dazugehörenden Antwort haben aus dem Behälter zurückgeführt. Das AsyncContext könnte verwendet werden, um die Antwort von dem Async Thread zu schreiben. Es kann auch verwendet werden, um nur zu benachrichtigen, dass die Antwort nicht geschlossen und festgeschrieben ist.

Von the javadoc of the javax.servlet.AsyncContext interface:

In dem Fall, dass ein asynchroner Vorgang abgelaufen ist, muss die Behälter durch diese Schritte ausführen:

  1. Invoke an ihrer onTimeout Methode, alle AsyncListener Instanzen, die mit der ServletRequest registriert wurden, für die die asynchrone Operation initiiert wurde.
  2. Wenn keiner der Listener die Methode complete() oder eine der Methoden dispatch() aufgerufen hat, führen Sie eine Fehlerübermittlung mit dem Statuscode an HttpServletResponse.SC_INTERNAL_SERVER_ERROR aus.
  3. Wenn keine passende Fehlerseite gefunden, oder die Fehlerseite nicht abgeschlossen wurde() aufrufen oder einen der dispatch() Methoden, rufen complete().“

Die obige letzte Zeile ist von am wichtigsten - es werde ein Aufruf an AsyncContext.complete() sein The javadoc says.

Vervollständigt den asynchronen Vorgang, der auf die Anforderung gestartet wurde die verwendet wurde, um dieses AsyncContext zu initialze, Schließen der Antwort die verwendet wurde, um dieses AsyncContext zu initialisieren

Mit AsyncContext geschlossen, werden Aufrufe an die meisten seiner Methoden IllegalStateException werfen.

+0

Dank für Ihre Antwort :-) – xwinus

+0

@xwinus, wenn Sie die Antwort wünschen, genehmigen. –

+0

@JacekLaskowski: +1. Ich glaube, Sie haben auch indirekt die Poster andere Frage beantwortet [hier] (http://stackoverflow.com/questions/15228031/java-lang-illegalstateexception-not-suspended-when-asynccontextcomplete)! – brainOverflow

Verwandte Themen