В настоящее время у меня есть система Ruby on Rails, и есть планы перенести ее на GWT. Прежде чем мы сделаем это, полномочия, которые хотят иметь подтверждение концепции с частью сайта, написанной на GWT, чтобы показать, что GWT может использовать и отображать текущий контент. Поток данных в части системы GWT выглядит следующим образом:
- Клиент отправляет вызов RPC на сервер GWT
- Сервер получает вызов RPC, а затем делает эквивалентный Ajax-запрос к системе Rails
- Сервер генерирует объект Java из результата запроса Ajax и передает его клиенту
Проблема, с которой я сейчас сталкиваюсь, заключается в управлении данными сеансов пользователей в обеих системах. У нас есть только 1 экземпляр Tomcat, и у него есть собственный тип сеансов, а затем наша система Ruby использует ActiveRecordStore для хранения данных сеансов в базе данных.
Проблема здесь в том, что когда система Tomcat взаимодействует с системой Ruby, если клиент GWT сделал запрос на вход в систему, последний пользователь, который войдет в систему из GWT, будет иметь все исходящие запросы Ajax, выполняемые в системе Rails как если они текущий пользователь, поскольку система Tomcat для Rails выглядит как один клиент.
В любом случае, как я могу сделать так, чтобы, если пользователь начал сеанс с системой Tomcat, система Ruby знала об этом и имела эквивалентный сеанс, так что, хотя сервер Tomcat для него был единственным клиентом, система Rails осознает тот факт, что с этим единственным клиентом связывается множество разных пользователей.