Ответ 1
Кто первым получает HTTP-запросы?
Apache, почти наверняка. Могут существовать процессы администрирования, которые говорят напрямую с Tomcat.
Как httpd знает, когда отправлять запросы JSP на Tomcat или просто отвечать на запрос?
Из его конфигурации. Специфика будет отличаться. Например, он может использовать mod_jk
или mod_jk2
, и в этом случае вы найдете директивы JkMount
в конфигурационных файлах, например:
JkMount /*.jsp ajp13_worker
... который сообщает ему передать запросы в корне сайта для файлов, соответствующих *.jsp
, на ajp13_worker
, который определен в файле workers.properties
.
Или он может быть настроен в простой HTTP обратном прокси. Или что-то еще.
Как httpd "передает" запрос и "получает" ответ от Tomcat?
Это зависит от конфигурации; это может быть HTTP, он может быть AJP, или он может использовать какой-либо другой модуль.
Это просто "copy-n-paste" запрос/ответ на порт, который прослушивает Tomcat?
Сорт.:-) См. Ссылку обратного прокси выше.
Есть ли какая-то связь между процессами на уровне OS?
Да. AFAIK, все это на основе сокетов (а не, скажем, разделяемой памяти), что означает (среди прочего), что Tomcat и Apache не должны работать на одной машине.