2015-12-31 12:41 GMT+03:00 Tomasz Macnar <tomasz.mac...@comarch.pl>:
> Thanks for answer.
> I understand that application deploy order is the key to get context to
> deployed applicaitons (when application isn't deployed i can't get it
> context - it is clear).
> But ROOT application is deployed before app1, but i can't get ROOT context
> from app1.
> Is it in tomcat 8 possible to get ROOT context from other
> application (in servlet) ? If yes, coud tou give me an simple example ?
>
> In tomcat 6 when i put this configuration to server.xml
>
> <Context path="" docBase="${catalina.base}/webapps/ROOT" crossContext="true"
> />
>
> i have returned ROOT application context. The same code work fine in tomcat
> 6.
>

Deployment order does not matter. What matters is whether other
context has already been started (registered in Mapper and is
available to serve requests). As you have already noted during your
debugging, "children" field in ContainerBase is a HashMap and the
entries are not ordered.

Note that
1) modern JRE uses random seed when evaluating String hash code to
mitigate hash collision attacks, so the order will be different on
different runs

2) In Tomcat 7 and later a container starts all its children in
parallel, using an executor configured with "startStopThreads"
property.,

3) The Servlet API getContext(path) is tricky as it uses prefix matching.
Asking for getContext("/app/foo") can return context for "/app/foo",
or context for "/app", or the ROOT context.
Discussed here:
http://markmail.org/thread/wwfgnc6qwgaenwol
https://bz.apache.org/bugzilla/show_bug.cgi?id=57645

Best regards,
Konstantin Kolinko

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to