我目前有一个 Ruby on Rails 系统,并计划将其移植到 GWT。在我们这样做之前,希望有一个概念证明,其中部分网站是用 GWT 编写的,以表明 GWT 可以使用和显示当前内容。系统GWT部分的数据流如下:
- 客户端向 GWT 服务器发送 RPC 调用
- 服务器接收 RPC 调用,然后向 Rails 系统发出等效的 Ajax 请求
- 服务器从 Ajax 请求的结果中生成一个 Java 对象,并将其传递回客户端
我现在遇到的问题是跨两个系统管理用户会话数据。我们只有 1 个 Tomcat 实例,它有自己的会话类型,然后我们的 Ruby 系统使用 ActiveRecordStore 将会话数据存储在数据库中。
这里的问题是,当 Tomcat 系统与 Ruby 系统对话时,如果 GWT 客户端发出了登录请求,那么最后一个从 GWT 系统登录的用户在 Rails 系统中执行所有传出的 Ajax 请求,就好像他们'重新成为当前用户,因为 Tomcat 系统看起来像 Rails 的单个客户端。
无论如何,我怎样才能做到这一点,如果用户开始与 Tomcat 系统的会话,Ruby 系统将意识到这一点并有一个等效的会话,因此即使 Tomcat 服务器是它的单个客户端,Rails 系统意识到许多不同的用户正在从该单个客户端与它进行通信。