Re: Mixing Root Context webapp with other webapps
Jerry, On 7/9/21 01:58, Jerry Malcolm wrote: I have one webapp that processes REST-style url paths and therefore needs to run in the ROOT context. I'm not sure the conclusion follows from the premise, here. You can certainly use REST-style URL paths and not have a context at the top-level. Is it possible to run other webapps in the same host with other non-root contexts? It is, but I wouldn't recommend it. Well... I would definitely recommend /against/ it in some situations. Specifically, when both the root and other web applications both need to use cookie-based sessions. If you have two applications fighting over whose JSESSIONID cookie is the one to use for login, Bad Things can happen. If your root context and/or none of the non-root contexts will be using cookie-based session-tracking, then you will probably be fine. In other words, when resolving a URL to a web app, does it try to map the url to the defined context strings first, and then to ROOT if there are no matches? Or does ROOT override everything, and all URLs go to ROOT if it's defined? It's the latter, otherwise it would be pretty much impossible to deploy anything when a ROOT context was present. -chris - To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org
Re: Mixing Root Context webapp with other webapps
On 7/9/2021 2:23 AM, Olaf Kock wrote: On 09.07.21 07:58, Jerry Malcolm wrote: I have one webapp that processes REST-style url paths and therefore needs to run in the ROOT context. Is it possible to run other webapps in the same host with other non-root contexts? In other words, when resolving a URL to a web app, does it try to map the url to the defined context strings first, and then to ROOT if there are no matches? Or does ROOT override everything, and all URLs go to ROOT if it's defined? If memory serves me well and this behavior didn't change in the past decade, then all other web applications have precedence over root. That is, if you deploy ROOT.war and json.war (and assume the context-path to be /json), then your root application's /json path would never be reached. It's easy to visualize this way around, because it's an absolutely static mapping with the size being "number of webapps", while the other way around, ROOT could also map /* to one of its servlets and then determine what to do it. The spec has to means to explicitly hand a request back to the appserver and every app would rather generate 404 than check if somebody else might be there to handle it. Olaf Thanks for the quick response, Olaf. That's the way I was hoping it worked... :-) - To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org
Re: Mixing Root Context webapp with other webapps
On 09/07/2021 08:23, Olaf Kock wrote: On 09.07.21 07:58, Jerry Malcolm wrote: I have one webapp that processes REST-style url paths and therefore needs to run in the ROOT context. Is it possible to run other webapps in the same host with other non-root contexts? In other words, when resolving a URL to a web app, does it try to map the url to the defined context strings first, and then to ROOT if there are no matches? Or does ROOT override everything, and all URLs go to ROOT if it's defined? If memory serves me well and this behavior didn't change in the past decade, then all other web applications have precedence over root. That is, if you deploy ROOT.war and json.war (and assume the context-path to be /json), then your root application's /json path would never be reached. It's easy to visualize this way around, because it's an absolutely static mapping with the size being "number of webapps", while the other way around, ROOT could also map /* to one of its servlets and then determine what to do it. The spec has to means to explicitly hand a request back to the appserver and every app would rather generate 404 than check if somebody else might be there to handle it. To put it another way, when mapping a request to a web application Tomcat: - normalises the request URL - routes the request to the web application with the longest matching context path The exact wording is in section 12 of the Servlet specification. Mark - To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org
Re: Mixing Root Context webapp with other webapps
On 09.07.21 07:58, Jerry Malcolm wrote: > I have one webapp that processes REST-style url paths and therefore > needs to run in the ROOT context. Is it possible to run other webapps > in the same host with other non-root contexts? In other words, when > resolving a URL to a web app, does it try to map the url to the > defined context strings first, and then to ROOT if there are no > matches? Or does ROOT override everything, and all URLs go to ROOT if > it's defined? > If memory serves me well and this behavior didn't change in the past decade, then all other web applications have precedence over root. That is, if you deploy ROOT.war and json.war (and assume the context-path to be /json), then your root application's /json path would never be reached. It's easy to visualize this way around, because it's an absolutely static mapping with the size being "number of webapps", while the other way around, ROOT could also map /* to one of its servlets and then determine what to do it. The spec has to means to explicitly hand a request back to the appserver and every app would rather generate 404 than check if somebody else might be there to handle it. Olaf - To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org