Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Java servlet store broken with Rails 5.1 and Tomcat 7 #211

Closed
HarlemSquirrel opened this issue Aug 11, 2017 · 4 comments
Closed

Java servlet store broken with Rails 5.1 and Tomcat 7 #211

HarlemSquirrel opened this issue Aug 11, 2017 · 4 comments

Comments

@HarlemSquirrel
Copy link

I am trying to set up my rails app to use :java_servlet_store in place of :cookie_store for my session store.

Rails throws undefined method 'get_header' for Rack::Handler::Servlet::DefaultEnv being thrown when adding the following configuration:

if defined?($servlet_context)
  require 'action_controller/session/java_servlet_store'
  # tell rails to use the java container's session store
  Rails.application.config.session_store :java_servlet_store
else
  Rails.application.config.session_store :cookie_store, key: '_servicesdirectory_session'
end

Full backtrace:

Aug 11, 2017 7:47:14 PM org.apache.catalina.core.ApplicationContext log
INFO: I, [2017-08-11T19:47:14.637448 #1]  INFO -- : [150177b8-e353-437b-b893-a951d7029046] Started GET "/jruby-rails-tomcat-sample/" for 172.19.0.1 at 2017-08-11 19:47:14 +0000

Aug 11, 2017 7:47:14 PM org.apache.catalina.core.ApplicationContext log
INFO: I, [2017-08-11T19:47:14.736209 #1]  INFO -- : [150177b8-e353-437b-b893-a951d7029046] Processing by MessagesController#index as HTML

Aug 11, 2017 7:47:14 PM org.apache.catalina.core.ApplicationContext log
INFO: I, [2017-08-11T19:47:14.826652 #1]  INFO -- : [150177b8-e353-437b-b893-a951d7029046] Completed 500 Internal Server Error in 80ms

Aug 11, 2017 7:47:14 PM org.apache.catalina.core.ApplicationContext log
INFO: F, [2017-08-11T19:47:14.844744 #1] FATAL -- : [150177b8-e353-437b-b893-a951d7029046]   

Aug 11, 2017 7:47:14 PM org.apache.catalina.core.ApplicationContext log
INFO: F, [2017-08-11T19:47:14.846148 #1] FATAL -- : [150177b8-e353-437b-b893-a951d7029046] NoMethodError (undefined method `get_header' for #<Rack::Handler::Servlet::DefaultEnv:0x39f27856>):

Aug 11, 2017 7:47:14 PM org.apache.catalina.core.ApplicationContext log
INFO: F, [2017-08-11T19:47:14.846964 #1] FATAL -- : [150177b8-e353-437b-b893-a951d7029046]   

Aug 11, 2017 7:47:14 PM org.apache.catalina.core.ApplicationContext log
INFO: F, [2017-08-11T19:47:14.847805 #1] FATAL -- : [150177b8-e353-437b-b893-a951d7029046] gems/gems/rack-2.0.3/lib/rack/session/abstract/id.rb:295:in `current_session_id'
[150177b8-e353-437b-b893-a951d7029046] uri:classloader:/jruby/rack/session_store.rb:162:in `session_exists?'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/rack-2.0.3/lib/rack/session/abstract/id.rb:124:in `exists?'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/rack-2.0.3/lib/rack/session/abstract/id.rb:149:in `load_for_read!'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/rack-2.0.3/lib/rack/session/abstract/id.rb:56:in `[]'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/turbolinks-5.0.1/lib/turbolinks/redirection.rb:43:in `set_turbolinks_location_header_from_session'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/activesupport-5.1.3/lib/active_support/callbacks.rb:413:in `block in make_lambda'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/activesupport-5.1.3/lib/active_support/callbacks.rb:197:in `block in halting'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/actionpack-5.1.3/lib/abstract_controller/callbacks.rb:12:in `block in Callbacks'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/activesupport-5.1.3/lib/active_support/callbacks.rb:198:in `block in halting'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/activesupport-5.1.3/lib/active_support/callbacks.rb:507:in `block in invoke_before'
[150177b8-e353-437b-b893-a951d7029046] org/jruby/RubyArray.java:1734:in `each'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/activesupport-5.1.3/lib/active_support/callbacks.rb:507:in `invoke_before'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/activesupport-5.1.3/lib/active_support/callbacks.rb:130:in `run_callbacks'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/actionpack-5.1.3/lib/abstract_controller/callbacks.rb:19:in `process_action'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/actionpack-5.1.3/lib/action_controller/metal/rescue.rb:20:in `process_action'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/actionpack-5.1.3/lib/action_controller/metal/instrumentation.rb:32:in `block in process_action'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/activesupport-5.1.3/lib/active_support/notifications.rb:166:in `block in instrument'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/activesupport-5.1.3/lib/active_support/notifications/instrumenter.rb:21:in `instrument'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/activesupport-5.1.3/lib/active_support/notifications.rb:166:in `instrument'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/actionpack-5.1.3/lib/action_controller/metal/instrumentation.rb:30:in `process_action'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/actionpack-5.1.3/lib/action_controller/metal/params_wrapper.rb:252:in `process_action'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/activerecord-5.1.3/lib/active_record/railties/controller_runtime.rb:22:in `process_action'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/actionpack-5.1.3/lib/abstract_controller/base.rb:124:in `process'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/actionview-5.1.3/lib/action_view/rendering.rb:30:in `process'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/actionpack-5.1.3/lib/action_controller/metal.rb:189:in `dispatch'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/actionpack-5.1.3/lib/action_controller/metal.rb:253:in `dispatch'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/actionpack-5.1.3/lib/action_dispatch/routing/route_set.rb:49:in `dispatch'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/actionpack-5.1.3/lib/action_dispatch/routing/route_set.rb:31:in `serve'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/actionpack-5.1.3/lib/action_dispatch/journey/router.rb:46:in `block in serve'
[150177b8-e353-437b-b893-a951d7029046] org/jruby/RubyArray.java:1734:in `each'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/actionpack-5.1.3/lib/action_dispatch/journey/router.rb:33:in `serve'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/actionpack-5.1.3/lib/action_dispatch/routing/route_set.rb:834:in `call'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/rack-2.0.3/lib/rack/etag.rb:25:in `call'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/rack-2.0.3/lib/rack/conditional_get.rb:25:in `call'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/rack-2.0.3/lib/rack/head.rb:12:in `call'
[150177b8-e353-437b-b893-a951d7029046] uri:classloader:/jruby/rack/session_store.rb:79:in `context'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/rack-2.0.3/lib/rack/session/abstract/id.rb:226:in `call'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/actionpack-5.1.3/lib/action_dispatch/middleware/cookies.rb:613:in `call'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/actionpack-5.1.3/lib/action_dispatch/middleware/callbacks.rb:26:in `block in call'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/activesupport-5.1.3/lib/active_support/callbacks.rb:97:in `run_callbacks'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/actionpack-5.1.3/lib/action_dispatch/middleware/callbacks.rb:24:in `call'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/actionpack-5.1.3/lib/action_dispatch/middleware/debug_exceptions.rb:59:in `call'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/actionpack-5.1.3/lib/action_dispatch/middleware/show_exceptions.rb:31:in `call'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/railties-5.1.3/lib/rails/rack/logger.rb:36:in `call_app'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/railties-5.1.3/lib/rails/rack/logger.rb:24:in `block in call'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/activesupport-5.1.3/lib/active_support/tagged_logging.rb:69:in `block in tagged'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/activesupport-5.1.3/lib/active_support/tagged_logging.rb:26:in `tagged'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/activesupport-5.1.3/lib/active_support/tagged_logging.rb:69:in `tagged'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/railties-5.1.3/lib/rails/rack/logger.rb:24:in `call'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/actionpack-5.1.3/lib/action_dispatch/middleware/remote_ip.rb:79:in `call'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/actionpack-5.1.3/lib/action_dispatch/middleware/request_id.rb:25:in `call'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/rack-2.0.3/lib/rack/method_override.rb:22:in `call'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/rack-2.0.3/lib/rack/runtime.rb:22:in `call'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/activesupport-5.1.3/lib/active_support/cache/strategy/local_cache_middleware.rb:27:in `call'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/actionpack-5.1.3/lib/action_dispatch/middleware/executor.rb:12:in `call'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/rack-2.0.3/lib/rack/sendfile.rb:111:in `call'
[150177b8-e353-437b-b893-a951d7029046] gems/gems/railties-5.1.3/lib/rails/engine.rb:522:in `call'
[150177b8-e353-437b-b893-a951d7029046] uri:classloader:/rack/handler/servlet.rb:22:in `call'

Adding the configuration above to my sample app shows this happens with a new rails app.

I also posted in SO.
https://stackoverflow.com/questions/45594295/undefined-method-get-header-for-rackhandlerservletdefaultenv

Thanks in advance for your help!

@HarlemSquirrel HarlemSquirrel changed the title Java servlet store with Rails 5.1 and Tomcat 7 Java servlet store broken with Rails 5.1 and Tomcat 7 Aug 11, 2017
@kares
Copy link
Member

kares commented Aug 12, 2017

yes, unfortunately jruby-rack is behind. we pbly only officially supported Rails <= 4.2 its mostly luck that nothing broke with 5.0. Rack's 2.0 changes also should get reviewed for this. unfortunately were low on maintainers...

@HarlemSquirrel
Copy link
Author

HarlemSquirrel commented Aug 12, 2017 via email

@kares
Copy link
Member

kares commented Aug 12, 2017

honestly did you try :) ? its not that hard to find, start here and find yourself around ...
... also backwards-compatibility is important if you want it in 1.1.x (1.1-stable branch)

@HarlemSquirrel
Copy link
Author

HarlemSquirrel commented Aug 12, 2017 via email

HarlemSquirrel pushed a commit to HarlemSquirrel/jruby-rack that referenced this issue Aug 15, 2017
kares pushed a commit that referenced this issue Aug 17, 2017
* Add Rack::Handler::Servlet::DefaultEnv#get_header

Fixes #211

* Update Rack::Handler::Servlet::DefaultEnv

Add missing methods to handle ActionController::Base#reset_session
@kares kares closed this as completed Aug 17, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants