1

我创建了一个简单的 sinatra 应用程序,但在将其作为可执行战争运行时无法使会话工作。

我已经验证它在通过“jruby -S rackup”运行时可以工作,但是当使用“java -jar myapp.war”运行时,我发现会话在每个请求上都会被重置:

INFO: Winstone Servlet Engine v0.9.10 running: controlPort=disabled
session: {"session_id"=>"75936d3d21367f5c1896e749ba401d7715e41a5fd01317484faa44d80c8afaea", "csrf"=>"60367cb6c5ead39b2669668ed28db3a1", "tracking"=>{"
HTTP_USER_AGENT"=>"9f3d63482f1fb48a317c5c9e2de6196f9cd239cc", "HTTP_ACCEPT_LANGUAGE"=>"66eae971492938c2dcc2fb1ddc8d7ec3196037da"}}
Jul 20, 2014 8:00:20 PM winstone.Logger logInternal
INFO: 0:0:0:0:0:0:0:1 -  [20/Jul/2014 20:00:20] "GET / " 200 765 0.1670

session: {"session_id"=>"19d266ffb8ccb29108464961e68fa9e29f1c3b45e0097806b4cbc8db156d71d7", "csrf"=>"5ac12991c2ec8d4acf22180d79c494c2", "tracking"=>{"
HTTP_USER_AGENT"=>"9f3d63482f1fb48a317c5c9e2de6196f9cd239cc", "HTTP_ACCEPT_LANGUAGE"=>"66eae971492938c2dcc2fb1ddc8d7ec3196037da"}, "name"=>"john"}
Jul 20, 2014 8:00:31 PM winstone.Logger logInternal
INFO: 0:0:0:0:0:0:0:1 -  [20/Jul/2014 20:00:31] "GET /login/john " 200 9 0.0240

session: {"session_id"=>"60f161941822b4f0fae9085db58fe9ea30e86d56dc16fff2ea5859bb4008c58f", "csrf"=>"7dd3977bef9fca9c7ed9b77fdc774657", "tracking"=>{"
HTTP_USER_AGENT"=>"9f3d63482f1fb48a317c5c9e2de6196f9cd239cc", "HTTP_ACCEPT_LANGUAGE"=>"66eae971492938c2dcc2fb1ddc8d7ec3196037da"}}
Jul 20, 2014 8:00:40 PM winstone.Logger logInternal

除了设置要启用的会话之外,当应用程序与 warbler 打包并作为可执行战争运行时,是否需要任何特殊设置才能使会话工作?

4

1 回答 1

1

不需要什么特别的——我试过你的样品,效果很好。

这可能是您使用的jruby-rack版本的错误...请尝试> = 1.1.15

我还建议尝试使用 jetty 网络服务器(您可以在config/warbler.rb找到一个选项)...我会尝试确保 jetty 是未来 Warbler 版本的默认设置。

于 2014-07-23T08:21:04.550 回答