2013-03-16 10 views

risposta

6

Java Servlet 3.0 Maintenance Release a pagina 34 si legge:

Una chiamata a questo metodo - ServletRequest.startAsync(ServletRequest req, ServletResponse res) - assicura che la risposta non viene commesso quando alla chiusura dell'applicazione fuori del metodo di servizio. Viene eseguito quando viene richiamato AsyncContext.complete su AsyncContext restituito o su AsyncContext restituito o su AsyncContext e non ci sono ascoltatori associati a gestire lo timeout. Il timer per i timeout asincroni non si avvia fino a quando la richiesta e la risposta associata non sono state restituite dal contenitore. È possibile utilizzare AsyncContext per scrivere sulla risposta dal thread asincrono . Può anche essere usato per segnalare che la risposta non è chiusa e confermata.

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

Nel caso in cui un'operazione asincrona è scaduta, il contenitore deve percorrere seguente procedura:

  1. valere in loro metodo onTimeout, tutti AsyncListener istanze registrate con ServletRequest su cui è stata avviata l'operazione asincrona .
  2. Se nessuno degli ascoltatori ha chiamato complete() o nessuno dei metodi dispatch(), eseguire una spedizione di errore con un codice di stato uguale a in HttpServletResponse.SC_INTERNAL_SERVER_ERROR.
  3. Se è stata trovata alcuna pagina di errore di corrispondenza, o la pagina di errore non ha chiamato i metodi completi() o qualsiasi della spedizione(), chiamata completa()."

L'ultima riga di cui sopra è di più importanza - ci sarà una chiamata a AsyncContext.complete()The javadoc says:.

Completa l'operazione asincrona che è stato avviato su richiesta che è stato utilizzato per questo initialze AsyncContext, chiudendo la risposta che è stato utilizzato per inizializzare questo AsyncContext

Con AsyncContext chiuso, le chiamate alla maggior parte dei suoi metodi generano IllegalStateException.

+0

grazie per la vostra risposta :-) – xwinus

+0

@xwinus se vi piace la risposta, approvarla. –

+0

@JacekLaskowski: +1. Penso che tu abbia indirettamente risposto ai posters anche altre domande [qui] (http://stackoverflow.com/questions/15228031/java-lang-illegalstateexception-not-suspended-when-asynccontextcomplete)! – brainOverflow

Problemi correlati