Мне было интересно, что именно спрашивал ОП, и я не понимаю, почему он был закрыт. К счастью, есть ответы.
Флориан Ф
4
Веб-сервер Apache и Apache Tomcat - это два разных инструмента, настроенных для разных целей. Если мы больше не можем различать их случаи использования по фактам и опыту, то мы приходим в плачевное состояние. Стремление закрыть «спорные» вопросы перешло. Возможно, модераторы должны быть более информированными и менее самоуверенными. Как говорит @FlorianF, по крайней мере, сейчас есть ответы.
NeilG
2
Учитывая количество голосов - это не должно было быть закрыто - но вместо этого должно быть заблокировано - поскольку это на самом деле очень хороший вопрос с полезными ответами.
Симбро
В closedуведомлении по этому Вопросу говорится, что требуется, чтобы Ответы имели объективное содержание, но ожидается, что вместо этого Вопрос будет давать субъективное содержание Ответа - большинство Ответов, по-видимому, содержат объективное содержание (особенно Ответы с более высоким рейтингом), а не субъективное - поэтому этот Вопрос должен быть НЕ ЗАКРЫТ. Опасения субъективности никогда не случались, и я не согласен с тем, что Вопрос когда-либо рисковал быть субъективным.
cellepo
Ответы:
475
Apache Tomcat используется для развертывания ваших Java-сервлетов и JSP. Таким образом, в вашем проекте Java вы можете создать файл WAR (сокращение от Web ARchive) и просто поместить его в каталог развертывания в Tomcat.
В общем, Apache - это HTTP-сервер, обслуживающий HTTP. Tomcat - это сервлет и сервер JSP, обслуживающие технологии Java.
Tomcat включает в себя Catalina, которая является контейнером сервлетов. В конце сервлет - это класс Java. Файлы JSP (которые похожи на PHP и более старые файлы ASP) генерируются в код Java (HttpServlet), который затем компилируется сервером в файлы .class и выполняется виртуальной машиной Java.
Что вы подразумеваете под «Apache [...] обслуживает HTTP»? Разве Tomcat также не обслуживает (гипертекст, иначе) HTTP? Почему Tomcat просто не может быть модулем Apache "mod_java"? Вы можете объяснить?
Петерино
30
Tomcat - это контейнер сервлетов. В конце сервлет - это класс Java. Файлы JSP (которые похожи на файлы PHP oder ASP) генерируются в код Java (HttpServlet), который затем компилируется сервером в файлы .class и выполняется виртуальной машиной Java. - Кроме того, этот форум довольно хорошо объясняет разницу между Apache HTTPD и Tomcat: coderanch.com/t/85182/Tomcat/…
Петерино
17
Tomcat действительно обладает способным веб-сервером. Tomcat - это контейнер сервлетов / JSP, а также веб-сервер. Веб-сервер Tomcat неплохой, он способен справиться с большинством небольших и средних потребностей веб-сайта. Благодаря поддержке Java NIO и 64-битной памяти, даже некоторые крупномасштабные веб-сайты могут хорошо обслуживаться модулем Tomcat Catalina. По разным причинам некоторые люди предпочитают игнорировать Catalina и вместо этого использовать возможности сервлета Tomcat, стоящие за httpdпродуктом веб-сервера Apache .
Василий Бурк
21
Исправление к моему комментарию: Coyote - это модуль в Tomcat, отвечающий за веб-обслуживание. Каталина это модуль, который делает сервлетов. Jasper - это модуль, который обрабатывает JSP.
Василий Бурк
17
@KorayTugay Да. Tomcat = ( Web Server + Servlet container + JSP environment ), По умолчанию веб-сервер включен, когда вы запускаете startup.shскрипт Tomcat , прослушивая порт 8080 для входящих соединений (HTTP-вызовы). Tomcat - это чистый Java с собственной реализацией веб-сервера (Coyote). Apache HTTP Server (AHS), напротив, имеет совершенно отдельную реализацию веб - сервера, используя родной C / C ++ код. AHS очень гибкая и мощная, но часто излишняя. Собственный веб-сервер Tomcat работает очень хорошо. Используйте AHS, только если действительно необходимо.
Василий Бурк
118
В дополнение к хорошим ответам, приведенным выше, я думаю, что следует сказать, что Tomcat имеет собственный встроенный HTTP-сервер и полностью функционирует для обслуживания статического контента. В зависимости от конфигурации вашей виртуальной машины Java она может превзойти обычные коннекторы в Apache, такие как mod_proxy и mod_jk.
При этом полностью оптимизированный сервер Tomcat должен быстро обслуживать статические файлы, и если у вас есть Java-сервлеты, файлы JSP и ColdFusion, в дополнение к статическому контенту, вы можете обнаружить, что tomcat сам по себе отлично справляется.
Правда. И многие люди все еще используют дополнительную настройку Apache, кроме своего Tomcat, что в большинстве случаев не требуется.
Марко Шуленберг
6
Самая мощная часть apache http, которую поддерживают немногие другие серверы, - это возможность перенаправить и переписать запрос до того, как приложение его увидит, а именно через mod_rewriteвнедрение ядра и условной среды. mod_proxyобеспечивает элементарную балансировку нагрузки (и в сочетании с mod_jk обеспечивает элементарную липкую сессию / разделяемое состояние между экземплярами tomcat с балансировкой нагрузки).
ковбер
81
Apache - это http-сервер общего назначения, который поддерживает ряд дополнительных параметров, которых нет у Tomcat.
Хотя Tomcat можно использовать как http-сервер общего назначения, вы также можете настроить Apache и Tomcat для совместной работы с Apache, обслуживающим статическое содержимое и перенаправляющим запросы на динамическое содержимое в Tomcat.
Разве не все сети в конце статичны? Насколько я понимаю, Tomcat генерирует статический контент (динамически), тогда Apache будет его обслуживать. Таким образом, Tomcat никогда не будет обслуживать динамический контент или что-либо еще, он будет генерировать его только при необходимости.
Корай Тугай
11
@KorayTugay Вы путаете свои условия. «Генерировать его при необходимости» - это именно то, что означает «динамический», и является полной противоположностью «статического». Основная цель Apache HTTP Server - обслуживать статический контент, тогда как основная цель технологии Servlet - генерировать контент на лету (динамический контент).
Василий Бурк
1
@BasilBourque Я был перепутан с Tomcat, который на самом деле размещал здесь контент. Он будет только генерировать контент, он не будет обслуживать его при использовании вместе с Apache Http Server. Вероятно, вы правы, и я просто растерялся, но я бы сказал, что при совместном использовании Apache Tomcat генерирует статический контент, когда это необходимо. Если не используется Apache, Coyote в Tomcat будет выполнять обслуживание, в то время как Catalina и Jesper генерируют динамический контент.
Корай Тугай
3
@KorayTugay Да, ваш последний комментарий правильный. Если вы используете Apache HTTP Server + Tomcat, веб-браузеры только «видят» AWS, не зная, что Tomcat работает за кулисами. AWS является посредником между клиентами веб-браузера и Tomcat. Если используется только Tomcat, то модуль Coyote в Tomcat заменяет AWS для отправки запросов от клиентов веб-браузера. Я рекомендую последний вариант (один только Tomcat), если вы не знаете, что у вас есть особые потребности, которые лучше бы удовлетворял AWS.
Василий Бурк
29
Tomcat - это прежде всего сервер приложений, который обслуживает запросы к специально созданным Java-сервлетам или файлам JSP на вашем сервере. Обычно он используется вместе с HTTP-сервером Apache (по крайней мере, по моему опыту). Используйте его для ручной обработки входящих запросов.
Сам по себе HTTP-сервер лучше всего подходит для обслуживания статического содержимого ... HTML-файлов, изображений и т. Д.
Я сомневаюсь в Tomcat is primarily an application serverутверждении.
Рэйчел
6
Tomcat в первую очередь предназначен для сервера приложений. хотя это делает статический контент сервера также.
Масштабируемый
4
Да, Tomcat - это, прежде всего, сервер приложений, если этот термин подразумевает контейнер сервлетов, генерирующий динамический контент, доставляемый в веб-браузеры. В качестве одного из первых контейнеров для сервлетов, это и есть причина существования Tomcat.
@PrateekMishra На основании предоставленной вами ссылки ваше утверждение о том, что tomcat является веб-сервером , неверно; это (прежде всего) веб-контейнер , также известный как контейнер сервлетов .
скомиса
21
сервер apache - это сервер http, который может обслуживать любые простые запросы http, где сервер tomcat на самом деле является контейнером сервлетов, который может обслуживать запросы сервлетов java.
Веб-сервер [apache] обрабатывает запросы веб-клиента (веб-браузеры) и перенаправляет их в контейнер сервлетов [tomcat], а контейнер обрабатывает запросы и отправляет ответ, который передается веб-сервером веб-клиенту [браузеру].
Также вы можете проверить эту ссылку для уточнения: -
Если вы используете технологию Java (Servlet / JSP) для создания веб-приложения, вы, вероятно, будете использовать Apache Tomcat. Однако, если вы используете другие технологии, такие как Perl, PHP или ruby, лучше использовать Apache HTTP Server.
Этот ответ не имеет смысла для меня. Первое предложение неверно в том смысле, что помимо Tomcat есть много других контейнеров Servlet / JSP, некоторые довольно популярные, такие как Jetty, JBoss / Wildfly, Glassfish, WebSphere и многие другие. Несмотря на популярность, Tomcat не доминирует, имея лишь небольшую долю рынка. Что касается второго предложения, Tomcat часто используется в качестве контейнера сервлета за Apache HTTP Server. И PHP и т. Д. Часто используются с несколькими другими веб-серверами, такими как Nginx, Lighttpd и другие.
Василий Бурк
3
Итак, Apache - это веб-сервер HTTP, а Tomcat также является веб-сервером для сервлетов и JSP. Более того, в реальном времени Apache предпочитается над Apache Tomcat.
Этот вопрос довольно старый, и ваш ответ, кажется, дублирует те, которые были опубликованы давно. Ответы приветствуются, но новые ответы должны помочь добавить к разговору.
GargantuChet
-2
Apache - это веб-сервер HTTP, который служит HTTP.
Apache Tomcat - это контейнер Java-сервлетов. Он работает так же, как веб-сервер, но настроен для выполнения страниц Java-сервлета и страниц JSP.
да, ответ немного запутанный, так как @ Basil Bourque сказал выше: «Койот - это модуль в Tomcat, отвечающий за веб-обслуживание, Catalina - это модуль, выполняющий сервлеты. А Jasper - это модуль, который обрабатывает JSP», теперь он дает ясность о том, как «ОСОБЕННОСТИ TOMCAT как веб-сервер, настроенный для выполнения страниц сервлетов Java и JSP !!!! "
closed
уведомлении по этому Вопросу говорится, что требуется, чтобы Ответы имели объективное содержание, но ожидается, что вместо этого Вопрос будет давать субъективное содержание Ответа - большинство Ответов, по-видимому, содержат объективное содержание (особенно Ответы с более высоким рейтингом), а не субъективное - поэтому этот Вопрос должен быть НЕ ЗАКРЫТ. Опасения субъективности никогда не случались, и я не согласен с тем, что Вопрос когда-либо рисковал быть субъективным.Ответы:
Apache Tomcat используется для развертывания ваших Java-сервлетов и JSP. Таким образом, в вашем проекте Java вы можете создать файл WAR (сокращение от Web ARchive) и просто поместить его в каталог развертывания в Tomcat.
В общем, Apache - это HTTP-сервер, обслуживающий HTTP. Tomcat - это сервлет и сервер JSP, обслуживающие технологии Java.
Tomcat включает в себя Catalina, которая является контейнером сервлетов. В конце сервлет - это класс Java. Файлы JSP (которые похожи на PHP и более старые файлы ASP) генерируются в код Java (HttpServlet), который затем компилируется сервером в файлы .class и выполняется виртуальной машиной Java.
источник
httpd
продуктом веб-сервера Apache .Tomcat = ( Web Server + Servlet container + JSP environment )
, По умолчанию веб-сервер включен, когда вы запускаетеstartup.sh
скрипт Tomcat , прослушивая порт 8080 для входящих соединений (HTTP-вызовы). Tomcat - это чистый Java с собственной реализацией веб-сервера (Coyote). Apache HTTP Server (AHS), напротив, имеет совершенно отдельную реализацию веб - сервера, используя родной C / C ++ код. AHS очень гибкая и мощная, но часто излишняя. Собственный веб-сервер Tomcat работает очень хорошо. Используйте AHS, только если действительно необходимо.В дополнение к хорошим ответам, приведенным выше, я думаю, что следует сказать, что Tomcat имеет собственный встроенный HTTP-сервер и полностью функционирует для обслуживания статического контента. В зависимости от конфигурации вашей виртуальной машины Java она может превзойти обычные коннекторы в Apache, такие как mod_proxy и mod_jk.
При этом полностью оптимизированный сервер Tomcat должен быстро обслуживать статические файлы, и если у вас есть Java-сервлеты, файлы JSP и ColdFusion, в дополнение к статическому контенту, вы можете обнаружить, что tomcat сам по себе отлично справляется.
источник
mod_rewrite
внедрение ядра и условной среды.mod_proxy
обеспечивает элементарную балансировку нагрузки (и в сочетании с mod_jk обеспечивает элементарную липкую сессию / разделяемое состояние между экземплярами tomcat с балансировкой нагрузки).источник
Tomcat - это прежде всего сервер приложений, который обслуживает запросы к специально созданным Java-сервлетам или файлам JSP на вашем сервере. Обычно он используется вместе с HTTP-сервером Apache (по крайней мере, по моему опыту). Используйте его для ручной обработки входящих запросов.
Сам по себе HTTP-сервер лучше всего подходит для обслуживания статического содержимого ... HTML-файлов, изображений и т. Д.
источник
Tomcat is primarily an application server
утверждении.сервер apache - это сервер http, который может обслуживать любые простые запросы http, где сервер tomcat на самом деле является контейнером сервлетов, который может обслуживать запросы сервлетов java.
Веб-сервер [apache] обрабатывает запросы веб-клиента (веб-браузеры) и перенаправляет их в контейнер сервлетов [tomcat], а контейнер обрабатывает запросы и отправляет ответ, который передается веб-сервером веб-клиенту [браузеру].
Также вы можете проверить эту ссылку для уточнения: -
https://sites.google.com/site/sureshdevang/servlet-architecture
Также проверьте этот ответ для дальнейшего исследования: -
https://softwareengineering.stackexchange.com/a/221092
источник
Если вы используете технологию Java (Servlet / JSP) для создания веб-приложения, вы, вероятно, будете использовать Apache Tomcat. Однако, если вы используете другие технологии, такие как Perl, PHP или ruby, лучше использовать Apache HTTP Server.
источник
Итак, Apache - это веб-сервер HTTP, а Tomcat также является веб-сервером для сервлетов и JSP. Более того, в реальном времени Apache предпочитается над Apache Tomcat.
источник
Apache - это веб-сервер HTTP, который служит HTTP.
Apache Tomcat - это контейнер Java-сервлетов. Он работает так же, как веб-сервер, но настроен для выполнения страниц Java-сервлета и страниц JSP.
источник