2012-06-21 9 views
9

Sto cercando una soluzione per un problema con GWT and OSGi+PAX-Web. Il problema particolare è che GWT non può caricare il file dei criteri di serializzazione, dando il seguente errore:In che modo GWT RPC carica i file dei criteri di serializzazione?

ERROR: The serialization policy file '/ctx/ctx/6ExxxxxxxxxxxxxxxxF.gwt.rpc' was not found; did you forget to include it in this deployment?

il problema si trova da qualche parte tra Equinox OSGi e PAX-WEB.

Per trovare una soluzione, vorrei capire meglio come GWT-RPC sta caricando i file dei criteri di serializzazione.

  • Qual è il loro ciclo di vita? Quando vengono caricati? (Vedo che si trova all'avvio del server.Tutte le particolarità del ciclo di vita? Ricarica?)
  • Come GWT carica questo file nel suo stack? A che punto della pila di chiamate di una richiesta? In che modo GWT sa dove caricarli? Posso dire a GWT dove dovrebbe cercare questo file?

(disclaimer: ho letto la documentazione GWT sui file generati [2] sto cercando ulteriori dettagli di basso livello. Ho l'impressione che l'errore stiamo avendo deve affrontare HttpContext. getResource())

risposta

11

È tutto in RemoteServiceServlet.

What is their lifecycle? When are they loaded? (I see it's on server startup. Any particularities in the lifecycle? Reload?)

Sono caricati al primo utilizzo (prima richiesta ricevuta) e memorizzate nella cache in un campo di servlet, quindi il loro ciclo di vita è legata a quella del servlet stessa.

How GWT loads this file in its stack? At what point in the call stack of a request? How does GWT knows where to load them from? Can I tell GWT where it should look for this file?

servlet.getServletContext().getResourceAsStream. È possibile personalizzare questo sostituendo doGetSerializationPolicy (come detto nel JavaDoc).
Il nome file (URL risorsa) viene creato dal percorso della richiesta e dall'intestazione della richiesta X-GWT-Permutation.

+1

grazie per i suggerimenti. Roba buona. Per la cronaca, ecco il link alla fonte. Potrebbe essere d'aiuto come riferimento: http://code.google.com/p/google-web-toolkit/sorgente/browse/trunk/utente/src/com/google/gwt/utente/server/rpc/RemoteServiceServlet.java? spec = svn5045 & r = 5045 – maasg

+0

Come funziona con GWT-PhoneGap registrazione remota? https://code.google.com/p/gwt-phonegap/wiki/LoggingModule il '' .gwt.rpc'' richiesto è sul telefono. Devo copiarlo sul server o GWT lo invierà in qualsiasi momento. – confile

4

Ho cercato il file .rpc nel mio file EAR e ho scoperto che il nome file era diverso dall'errore.

Soluzione: cancellata la cache del browser e aggiornata.

+0

quindi probabilmente hai avuto un problema diverso. – maasg

+0

Sospetto che questa sia la soluzione per la maggior parte delle persone che hanno questo problema. –

+0

+1 qui Per me sembra che dovremmo trovare un modo per chiedere al cliente di ottenere nuove risorse dopo l'aggiornamento dell'applicazione. –

4

Risposta a condizione che il mio Nick abbia lavorato per me.

Ho avuto la mia app Web in esecuzione con alcune classi per lungo tempo.

In seguito ho aggiunto nuove classi sul server e quando provo ad avviare l'applicazione web, che mi stava dando il seguente errore:

ERRORE: Il file di criteri di serializzazione '/ newapp/C3055CD048198D732D03CA6901E503 86.gwt .rpc "non è stato trovato; hai dimenticato di includerlo in questa distribuzione?

ATTENZIONE: impossibile ottenere la SerializationPolicy 'C3055CD048198D732D03CA6901E5038 6' per il modulo 'http: //10.10.1.23: 9200/newapp /'; verrà utilizzata una politica di serializzazione compatibile con 1.3.3 compatibile. Di conseguenza, potresti riscontrare SerializationExceptions.

Quindi ho avviato l'app nella finestra di navigazione in incognito, che cancella il cache e ha funzionato per me.

Problemi correlati