Domanda

Al momento ho un'applicazione GWT che utilizza il RequestBuilde per inviare messaggi a un servlet che ho (usando POST e GET ) e il mio servlet (in doPost e doGet ) " mette in pausa " la richiesta (questo viene fatto usando Servlet 3.0) e lo aggiunge a una coda.
Inoltre ho un Thread demone che viene eseguito in background e "riproduce" la richiesta quando ci sono nuovi dati.
Questo funziona benissimo per me a parte il fatto che sto solo inviando stringhe per ora e mi piacerebbe utilizzare il meccanismo RPC per inviare Oggetti.
La mia domanda è questa:
Se creo la mia classe myServiceImpl che si estende RemoteServiceServlet come devo gestire doPost e doGet se del tutto?
Devo mettere in pausa la mia richiesta per utilizzare il supporto asincrono, dove questo dovrebbe essere realizzato? Forse avrei forse chiamato il metodo this.getThreadLocalRequest () nel mio metodo RPC nella classe myServiceImpl ma non sono sicuro di quanto sia saggio.
non sicuramente capisco anche come GWT gestisce la chiamata dal lato client di quella interfaccia asincrona. Per caso chiama il doGet per esempio del servlet e si assicura che chiama il metodo RPC richiesto?
Mi dispiace se ho fatto un casino di cose, è solo che non riesco a trovare altro informazioni tecniche dettagliate su come funziona esattamente questo business RPC.
Apprezzo qualsiasi mano di prestito
Ittai

È stato utile?

Soluzione 2

Penso che il principale fraintendimento che ho avuto in quel momento fosse legato al fatto che GWT RPC si basa sul meccanismo servlet (internamente) e quindi cercare di usare quel meccanismo con servlet asincroni era, al momento, impossibile poiché GWT RPC era costruito su servlet 2.5 (di nuovo, al momento).

Altri suggerimenti

Per capire RPC dimentica di POST e OTTIENI che funziona diversamente (cioè dal punto di vista della programmazione. Internamente lo usa, ma non lo vedi o non devi capirlo, a meno che tu non voglia fare qualcosa di esotico). Un buon punto di partenza è su RPC sono i documenti GWT: http://code.google .com / webtoolkit / tutorial / 1.6 / RPC.html

Per darti un riepilogo. Quando si utilizza RPC il servlet myServiceImpl deve implementare i metodi di un'interfaccia denominata myService , oltre a estendere RemoveServiceServlet . I metodi ottengono come argomenti i dati che si desidera inviare al server.

Accanto all'interfaccia myService è necessario creare un'interfaccia myServiceAsync (entrambe le interfacce devono trovarsi in un pacchetto secondario client). Questa interfaccia myServiceAsync dovrebbe contenere gli stessi metodi dell'interfaccia myService tranne per il fatto che ciascun metodo restituisce void e ha un ultimo argomento aggiuntivo Callback AsyncCallback .

Nel tuo client devi strumento GWT per generare l'RPC tramite GWT.create (vedi la documentazione per i dettagli.

Per usare RPC, chiama i metodi nell'interfaccia myServiceAsync nel tuo codice client e GWT si occupa di inviarlo al servlet. Il servlet chiamerà quindi il metodo corrispondente con gli argomenti passati sul client. Questo viene fatto in modo asincrono. Quindi il client ritorna direttamente dalla chiamata.

Quando il server restituisce il risultato, viene richiamato il callback myServiceAsync o viene chiamato OnError o OnSuccess . OnError se il metodo sul lato server ha generato un errore, altrimenti OnSuccess . OnSuccess avrà come argomento il valore restituito da ciò che è stato restituito nel metodo implementato dal servlet.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top