2010-07-27 12 views

risposta

3

Non ancora implementato in Spring Framework 3.x. Vedi https://jira.springframework.org/browse/SPR-5587 e https://jira.springsource.org/browse/SPR-8517

Se quello che vuoi è il supporto di una cometa (ajax a lungo polling) "Potresti" provare CometD (http://cometd.org/documentation/cometd-java/server/services/integration-spring). Ma ti avverto che l'ho lasciato cadere, è solo gonfio! (Una cosa così semplice come il polling lungo richiede giorni di configurazione ??!)

Mi piacerebbe implementare alcuni controller RESTful in Spring3 e programmarmi il lungo polling. Crea la tua richiesta in stile Ajax sul server, il tuo controller lo tiene aperto finché il server non ha nuovi dati da inviare al browser. Il browser avvia una nuova lunga richiesta di polling per ottenere eventi successivi. Per evitare timeout di connessione, è sufficiente restituire i valori dummy che fanno ripetere la richiesta al client.

Pianura semplice è la maggior parte delle volte la soluzione migliore.

+0

dovrebbero essere attuate per la primavera 3.1.0, che è stato rilasciato, ma secondo https: //jira.springsource.org/browse/SEC-1685 è stato spostato su 3.2.0 ... tuttavia, il supporto di Servlet 3.0 è di ampio respiro e non significa necessariamente che l'elaborazione asincrona verrà implementata anche –

4

Non così veloce, non è così facile implementare un buon polling lungo. Il metodo che hai citato funziona bene, ma c'è un problema serio di "thread starvation"

Ogni polling lungo utilizzerà un thread, se hai 1000 utenti simultanei avresti bisogno di 1000 thread per soddisfare la richiesta di polling lunga (che la maggior parte delle volte aggiorna lo stato del lato server sul browser client)

Il molo 6 ha un modello continuo che rilascia abilmente il thread della richiesta di polling lungo da utilizzare dalla reale logica dell'applicazione.

+0

E Jetty 7, ora il l'attuale versione a metà 2011 supporta pienamente questo. Sto anche cercando uno stato attuale nel supporto di primavera. –

2

La domanda è piuttosto vecchia, ma ancora senza risposta. L'autore desiderava il supporto async in Spring MVC e la soluzione non è ancora stata fornita.

Come indicato in precedenza, la richiesta di supporto asincrono è stata inoltrata a Spring Community Bugtracker e doveva essere implementata nella primavera 3.1.0. Questo è stato rilasciato di recente, ma secondo le note di rilascio "è previsto il supporto Servlet 3.0" nella versione 3.2.0: https://jira.springsource.org/browse/SEC-1685

Ho bisogno di COMET altamente efficiente per la mia applicazione. La mia attuale implementazione si basa su questo esempio: http://code.google.com/p/jquery-stream/wiki/EchoExample, ma sono interessato a spostarlo sul controller MVC Spring. Per ora, ho appena migliorato l'esempio e ho iniettato manualmente i bean spring per consentire la comunicazione con il resto dell'applicazione. Ho avuto qualche problema con esso, descritto nella mia domanda: Tomcat 7 Async Processing failing - only one request processed simultanously. Per ora sta funzionando bene.

Ho trovato un esempio che utilizza le soluzioni jboss: http://docs.jboss.org/resteasy/docs/1.0.0.GA/userguide/html/Asynchronous_HTTP_Request_Processing.html, ma l'utilizzo di jboss come per me non è una soluzione. JBoss è troppo grande, troppo lento e troppo difficile da sviluppare.

+0

Vedere (e votare per :)) https://jira.springsource.org/browse/SPR-8517 –

0

Il supporto asincrono servlet 3.0 è attualmente in fase di valutazione. Se hai scenari specifici che ti piacerebbe vedere riflessi, per favore commenta sotto SPR-8517 o guarda il biglietto e segui la discussione.

Problemi correlati