【问题标题】:Using java servlet store doesn't work in my Jruby on Rails application running in Tomcat在运行在 Tomcat 中的 Jruby on Rails 应用程序中,使用 java servlet 存储不起作用
【发布时间】:2012-08-31 13:56:10
【问题描述】:

在 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肯定有问题……

【问题讨论】:

  • 以及 cookie 的表现如何 - 你提到这可能是 cookie 的问题,如果知道它是如何工作的,那就太好了。检查在第一个请求上设置的 JSSESSIONID,然后比较第二个请求是否发送相同的 cookie,如果不是,则设置不正确(例如错误的域?您是否在代理后面?)您还可以尝试排除它是否是 Tomcat 配置通过尝试使用另一台服务器运行应用程序来解决问题,例如特立尼达 ...如果问题没有持续存在而不是您的 Tomcat 配置方式。
  • 也许这可以解决您的问题stackoverflow.com/questions/940143/…

标签: ruby-on-rails-3 cookies jrubyonrails


【解决方案1】:

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

需要'action_controller/session/java_servlet_store'

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

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

希望这会有所帮助。

【讨论】:

    【解决方案2】:

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

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

    会话.id
    会话[:你的会话变量]

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-26
      • 2012-02-26
      • 2011-04-22
      • 1970-01-01
      • 1970-01-01
      • 2017-11-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多