2011-12-13 33 views
0

我從JRuby的1.5升級到1.6.3的JRuby和Rails 2.3.5到Rails 3.0。的JRuby 1.6 + 3的Rails和Java servlet的會話存儲問題

早些時候,我曾經使用:

ActionController::Base.session_store = :java_servlet_store if defined?($servlet_context) 
在配置/初始化/ session_store.rb

現在

在同一文件中我做的:

Mb30::Application.config.session_store = :java_servlet_store if defined?($servlet_context) 

產量的早期版本用於產生jsessionid和工作 以及會話。由於我在Tomcat中使用的Java servlet的店,我用 默認會話超時功能在web.xml,和它的工作非常出色。

但升級後我在Firebug中看到,有一個jsession ID 創建。但在同一時間有一個Rails _session_id也創造 及查殺jsessionid不殺Rails的會話ID。我也 有超過我的應用程序,它得到響應,並 將其作爲一個XML HTTP包裝API。在這裏,我認爲jsessionid與Rails會話不匹配,因爲在API中我無法獲得會話 對象,因爲它們在Rails會話中被設置。

這裏是我的寶石:

*** LOCAL GEMS *** 

abstract (1.0.0) 
actionmailer (3.0.0) 
actionpack (3.0.0) 
activemodel (3.0.0) 
activerecord (3.0.0) 
activerecord-jdbc-adapter (0.9.7 java) 
activerecord-jdbcpostgresql-adapter (0.9.7 java) 
activeresource (3.0.0) 
activesupport (3.0.0) 
arel (1.0.0) 
bouncy-castle-java (1.5.0146.1) 
builder (2.1.2) 
bundler (1.0.18) 
erubis (2.6.6) 
i18n (0.4.1) 
jdbc-postgres (8.4.701 java) 
jrails (0.6.0) 
jruby-jars (1.6.3) 
jruby-openssl (0.7.2, 0.7) 
jruby-rack (1.1.1, 1.0.10) 
mail (2.2.5) 
mime-types (1.16) 
polyglot (0.3.2) 
rack (1.2.1) 
rack-mount (0.6.12) 
rack-test (0.5.4) 
rails (3.0.0) 
railties (3.0.0) 
rake (0.9.2, 0.8.7) 
rubyzip (0.9.4) 
sources (0.0.1) 
thor (0.14.0) 
treetop (1.4.10) 
tzinfo (0.3.29, 0.3.23) 
warbler (1.2.0) 

誰能告訴我這裏的問題可能是什麼?

回答

0

我假設Mb30::Application是Rails應用程序,它本身就是Rails::Application子類,因此配置設置可能是賺不到它的出路ActionController::Base

嘗試增加這config/application.rb

config.action_dispatch.session_store = :java_servlet_store 

還有在config/initializers/session_store.rb建立用於會話存儲器的初始化:

Mb30::Application.config.session_store :java_servlet_store 

初始化器可能不是必需的;我在設置自定義數據庫會話存儲時使用了這個,因爲我遇到了類似的問題。

+0

我試過了,依然無果。它仍然表現爲Cookie商店並始終致電Set Cookie –