4

在 Tomcat 中运行时,我尝试使用 java servlet 存储而不是 :cookie_store。我的应用程序使用 :cookie_store 运行良好,但是当使用 :java_servlet_store 时,不再存储任何内容......

这似乎可行,但是,当我在 servlet_request.session 中存储一些东西时,稍后,我似乎无法再次获得该值......它似乎消失了......

在我的 session_store.rb 中:

require 'action_controller/session/java_servlet_store'
NameApplication::Application.config.session_store :java_servlet_store

在我的 application_controller.rb 中:

servlet_request.session.putValue(PROXYBRIDGEKEY, proxy_bridge)

似乎在工作

但后来我试图获得价值,但我得到了零……

servlet_request.session.getValue(PROXYBRIDGEKEY)

有什么想法可能是这里的问题吗?

需要明确的是,将值放入会话中确实有效(经过测试)。使用新的 html 请求,获取值不再起作用。所以,我猜想获取cookie肯定有问题......

4

2 回答 2

1

如果这对您不起作用,还请确保将 java_servlet_store 键设置为“JSESSIONID”以使用标准 JVM 会话。

在 Ruby 中,您需要做的就是读取和写入会话(这将访问 JVM 会话对象):

session.id
会话[:yoursessionvariable]

注意:如果您还没有初始化会话(分配会话变量值),会话将为零(使 session.id 未定义),直到您这样做。

于 2013-02-26T18:21:16.873 回答
1

您可以尝试的一件事是将您的商店定义为:

需要'action_controller/session/java_servlet_store'

NameApplication::Application.config.session_store :java_servlet_store, :key => "MyKey"

我不确定它是否相关,但对于 :cookie_store 是必要的。您还需要在 java_servlet_store 中标识您的 servlet 密钥是有道理的。该密钥将是发送给浏览器以供后续请求的 cookie 的密钥。

希望这可以帮助。

于 2013-02-12T18:47:33.303 回答