Domanda

Al momento ho un sistema di Ruby on Rails, e non ci sono piani per portarlo a GWT. Prima di fare questo, i poteri che essere vogliono avere una prova di concetto con una parte del sito di essere scritto in GWT per dimostrare che GWT può utilizzare e visualizzare il contenuto corrente. Il flusso di dati nella porzione GWT del sistema è il seguente:

  1. Il client invia una chiamata RPC al server di GWT
  2. Server riceve chiamata RPC, poi fa una richiesta Ajax equivalente al sistema Rails
  3. Server genera un oggetto Java dal risultato della richiesta Ajax, passa di nuovo al cliente

Il problema che sto funzionando in è ora la gestione dei dati delle sessioni utente attraverso entrambi i sistemi. Abbiamo solo 1 istanza di Tomcat, e che ha il suo tipo di sessioni, e quindi il nostro sistema di Ruby utilizza ActiveRecordStore per memorizzare i dati di sessione nel database.

Il problema qui è che quando i colloqui di sistema Tomcat con il sistema Ruby, se il cliente GWT ha fatto una richiesta di accesso, l'ultimo utente per il log-in dal sistema GWT ha tutte le richieste Ajax in uscita in corso di esecuzione nel sistema Rails come se sono l'utente corrente dal momento che il sistema di Tomcat si presenta come un unico client per Rails.

In ogni modo, come posso farlo in modo tale che se un utente inizia una sessione con il sistema di Tomcat, il sistema di Ruby sarà consapevole di questo e hanno una sessione di equivalente in modo che, anche se il server Tomcat è un singolo client ad esso, il sistema di Rails è consapevole del fatto che molti utenti diversi stanno comunicando con esso da quel singolo cliente.

È stato utile?

Soluzione

Credo che il modo migliore per risolvere questo sarebbe quella di utilizzare i cookie invece di un database per memorizzare la sessione. Rails supporta in modo nativo, in realtà è il negozio di cookie predefinito per qualche tempo. Il cookie stesso è firmato da un segreto server per impedire la manomissione degli utenti. Credo che l'attuazione Rails usa Rubino marshalling per scaricare / caricare i dati per cui si potrebbe avere per la sua attuazione in Java, oppure è possibile implementare il proprio responsabile del biscotto su entrambi i lati con la stessa idea.

E 'anche possibile utilizzare solo il codice Ruby da JRuby nell'applicazione Java.

Altri suggerimenti

Non so su RoR, ma nella maggior parte delle tecnologie web sessioni vengono mantenute tramite i cookie. Se a preservare i biscotti (per un determinato utente) attraverso più chiamate dal server Java per l'istanza RoR, si dovrebbe essere tutto bene.

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