0

JRuby 1.5 から JRuby 1.6.3 に、Rails 2.3.5 から Rails 3.0 にアップグレードしています。

以前は、次のように使用していました。

ActionController::Base.session_store = :java_servlet_store if defined?($servlet_context)

config/initializers/session_store.rb 内

同じファイルで、次のようにします。

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

Production の以前のバージョンはjsessionid、セッションで生成され、うまく機能していました。Tomcat で Java サーブレット ストアを使用したので、 でデフォルトのセッション タイムアウト機能を使用しましたがweb.xml、非常にうまく機能しました。

ただし、アップグレード後、Firebug でjsessionID が作成されていることがわかります。しかし同時に 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)

ここで何が問題なのか誰か教えてもらえますか?

4

1 に答える 1

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

初期化子は必要ないかもしれません。同様の問題に遭遇したため、カスタム DB セッションストアをセットアップするときにこれを使用しました。

于 2011-12-29T14:32:47.430 に答える