[MAGNOLIA-4003] info.magnolia.module.admininterface.PageMVCServlet#getHandler can be broken with recent tomcat versions Created: 07/Mar/12  Updated: 04/Apr/14  Resolved: 24/Mar/14

Status: Closed
Project: Magnolia
Component/s: core
Affects Version/s: 4.4.6
Fix Version/s: None

Type: Bug Priority: Neutral
Reporter: Rico Jansen Assignee: Christopher Zimmermann
Resolution: Duplicate Votes: 0
Labels: VPRO, next, support
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
duplicate
duplicates MAGNOLIA-5382 Handling of URIs and paths with path ... Closed
Template:
Acceptance criteria:
Empty
Task DoD:
[ ]* Doc/release notes changes? Comment present?
[ ]* Downstream builds green?
[ ]* Solution information and context easily available?
[ ]* Tests
[ ]* FixVersion filled and not yet released
[ ]  Architecture Decision Record (ADR)
Bug DoR:
[ ]* Steps to reproduce, expected, and actual results filled
[ ]* Affected version filled
Date of First Response:

 Description   

Starting with tomcat 6.0.33 the tomcat behavior for request.getPathInfo() has changed. It seems that the servlet specs require this method to return the jsessionid part of the request path as well. Older versions of tomcat kindly removed this bit.

the info.magnolia.module.admininterface.PageMVCServlet#getHandler method is not taking this into account. It should test for and strip from the path the jsessionid.

In our setup this omission collides with the curious fact that the login filter now creates a redirect url that contains a jsessionid bit that is appended with '.[hostname]', as in: http://redactie.3voor12.vpro.nl/.magnolia/pages/adminCentral.html;jsessionid=06CABB93C2E6BED8A46434E883CD298C.vpro6a

This breaks the page name resolving code. We still don't know why this url is create in this way. We will log it when we do.



 Comments   
Comment by Rico Jansen [ 07/Mar/12 ]

See this: https://issues.apache.org/bugzilla/show_bug.cgi?id=51833

Comment by Rico Jansen [ 07/Mar/12 ]

if the jvmRoute attribute is set on the Engine element in tomcat server.xml config file, this value will be appended to the jsessionid string.

info.magnolia.module.admininterface.PageMVCServlet#getHandler bites the dus when this happens.

Comment by Nils Breunese [ 07/Mar/12 ]

Another phenomenon related to this: INFO info.magnolia.cms.beans.config.MIMEMapping 07.03.2012 14:37:45 – Cannot find MIME type for extension "html;jsessionid=C20A57D99CDB39741BC8745B318B508C"

Comment by Tobias Mattsson [ 03/Dec/13 ]

Many issues related to this change in tomcat has been fixed as part of MAGNOLIA-5382, including the problem with MIMEMapping.

Comment by Jan Haderka [ 10/Mar/14 ]

Check. As per comment from Tobias above, this issue should be fixed since Magnolia 4.5.14.

Comment by Christopher Zimmermann [ 24/Mar/14 ]

jsessionid is indeed removed from the pageName in 4.5.14 and on. See related ticket.
Problem is addressed in ContentTypeFilter#doFilter:
String requestURI = URI.create(ServletUtil.getRequestUri(request)).normalize().getPath();

The ServletUtil#getRequestUri method strips out path parameters like ;jsessionid.

If you do not want to upgrade for some reason - or patch your codebase, you could take one of these steps to remove the jsessionid from the url:

http://stackoverflow.com/questions/962729/is-it-possible-to-disable-jsessionid-in-tomcat-servlet

Generated at Mon Feb 12 03:51:44 CET 2024 using Jira 9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b.