2011-12-13 2 views
0

JRuby 1.5에서 JRuby 1.6.3 및 Rails 2.3.5를 Rails 3.0으로 업그레이드 중입니다.Jruby 1.6 + Rails 3 및 Java 서블릿 세션 저장소 문제

이전, 내가 사용하는 데 사용 : 동일한 파일에

이제 설정/초기화/session_store.rb에서

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

을 내가 할 : 생산에

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

이전 버전 jsessionid을 산출하고 을 세션에 잘 사용했습니다. Tomcat에서 자바 서블릿 저장소를 사용했기 때문에 기본 세션 시간 제한 기능을 web.xml에 사용하고 매우 잘 작동했습니다.

그러나 업그레이드 한 후에 나는 jsession id 이 생성 된 것을 확인했습니다. 동시에을 생성하고 jsessionid을 삭제해도 Rails 세션 ID가 삭제되지는 않습니다. 또한 내가 응답을 가져오고 xml로 보냅니다 내 응용 프로그램을 통해 HTTP 래퍼 API가 있습니다. 여기에서 jsessionid이 레일 세션에 일치하지 않는다는 것을 알았습니다. 그 이유는 API에서 어떤 것이 세션 을 가져올 수 없기 때문입니다. 레일 세션에서이 객체가 설정되기 때문입니다.

여기 내 보석은 다음과 같습니다

*** 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

나는 그 자체가 Rails::Application의 서브 클래스 인 Mb30::Application이라고 가정하고 있습니다. 따라서 구성 설정이 아마도 ActionController::Base으로 나오지 않을 것입니다.

config.action_dispatch.session_store = :java_servlet_store 

을뿐만 아니라 config/initializers/session_store.rb에서 세션 가기위한 초기화 설정 :

시도 config/application.rb이 추가

Mb30::Application.config.session_store :java_servlet_store 

하는 이니셜이 필요하지 않을 수있다; 비슷한 문제가 발생하여 맞춤 DB 세션 저장소를 설정할 때 이것을 사용했습니다.

+0

나는 그것을 아무리 노력해 보았지만 시도했다. 여전히 쿠키 저장소로 행동하고 Set Cookie를 항상 호출합니다. –