Чем отличается HTTP-сервер Apache от Tomcat Apache?

573

В чем разница в функциональности между Apache HTTP Server и Apache Tomcat?

Я знаю, что Tomcat написан на Java, а HTTP-сервер - на C, но кроме этого я действительно не знаю, как они отличаются. Имеют ли они разные функции?

  • 12
    Я добавил резюме в своем блоге, может, кому-то это поможет: tugay.biz/2014/11/what-is-tomcat-is-it-web-server-what.html
  • 25
    Мне было интересно, что именно спрашивал ОП, и я не понимаю, почему он был закрыт. К счастью, есть ответы.
Показать ещё 2 комментария
Теги:
tomcat
webserver

8 ответов

439
Лучший ответ

Apache Tomcat используется для развертывания ваших сервлетов Java и JSP. Таким образом, в вашем проекте Java вы можете создать свой файл WAR (short for Web ARchive) и просто поместить его в каталог развертывания в Tomcat.

Таким образом, в основном Apache является HTTP-сервером, обслуживающим HTTP. Tomcat - сервер Servlet и JSP, обслуживающий Java-технологии.

Tomcat - контейнер сервлетов. Сервлет, в конце, является классом Java. Файлы JSP (похожие на PHP и более старые файлы ASP) генерируются в Java-код (HttpServlet), который затем скомпилируется в файлы .class сервером и выполняется виртуальной машиной Java.

  • 1
    Я знаю, что Perl-скрипты могут работать в Tomcat. Разве это не правда?
  • 44
    Что вы подразумеваете под «Apache [...] обслуживает HTTP»? Разве Tomcat также не обслуживает (гипертекст, иначе) HTTP? Почему Tomcat просто не может быть модулем Apache "mod_java"? Вы можете объяснить?
Показать ещё 15 комментариев
95

В дополнение к тонким ответам выше, я думаю, следует сказать, что Tomcat имеет собственный HTTP-сервер, встроенный в него, и полностью функциональен для обслуживания статического контента. В зависимости от вашей конфигурации виртуальной машины java она может фактически превзойти традиционные подключения в apache, такие как mod_proxy и mod_jk.

Тем не менее, полностью оптимизированный сервер Tomcat должен быстро обслуживать статические файлы, и если у вас есть сервлеты Java, JSP и файлы ColdFusion в дополнение к статическому контенту, вы можете найти, что tomcat делает отличную работу сам по себе.

  • 3
    Правда. И многие люди по-прежнему используют дополнительную настройку Apache, кроме своего Tomcat, которая в большинстве случаев не нужна.
  • 5
    Самая мощная часть Apache http, которую поддерживают немногие другие серверы, - это возможность перенаправить и переписать запрос до того, как приложение его увидит, а именно через механизм mod_rewrite и внедрение условной среды. mod_proxy обеспечивает элементарную балансировку нагрузки (и в сочетании с mod_jk обеспечивает элементарную липкую сессию / общее состояние между экземплярами tomcat с балансировкой нагрузки).
64
  • Apache - это универсальный HTTP-сервер, который поддерживает ряд дополнительных опций, недоступных Tomcat.
  • Хотя Tomcat может использоваться как HTTP-сервер общего назначения, вы также можете настроить Apache и Tomcat для совместной работы с Apache, обслуживающим статический контент и пересылку запросов на динамический контент в Tomcat.
  • 0
    Разве не все сети в конце статичны? Насколько я понимаю, Tomcat генерирует статический контент (динамически), тогда Apache будет его обслуживать. Таким образом, Tomcat никогда не будет обслуживать динамический контент или что-либо еще, он будет генерировать его только при необходимости.
  • 9
    @KorayTugay Вы путаете свои условия. «Генерировать его при необходимости» - это именно то, что означает «динамический», и является полной противоположностью «статического». Основная цель Apache HTTP Server - обслуживать статический контент, в то время как основная цель технологии Servlet - генерировать контент на лету (динамический контент).
Показать ещё 2 комментария
24

Tomcat - это, прежде всего, сервер приложений, который обслуживает запросы на настраиваемые Java-сервлеты или JSP файлы на вашем сервере. Он обычно используется в сочетании с HTTP-сервером Apache (по крайней мере, по моему опыту). Используйте его для ручного обработки входящих запросов.

HTTP-сервер сам по себе лучше всего обслуживать статический контент... html файлы, изображения и т.д.

  • 9
    Я сомневаюсь, что Tomcat is primarily an application server .
  • 6
    Tomcat в первую очередь предназначен для сервера приложений. хотя это делает статический контент сервера также.
Показать ещё 3 комментария
17

сервер apache - это сервер http, который может обслуживать любые простые запросы http, где сервер tomcat на самом деле является контейнером сервлетов, который может обслуживать запросы сервлетов java.

Веб-сервер [apache] обрабатывает запросы веб-клиента (веб-браузеры) и направляет его в контейнер сервлетов [tomcat], а контейнер обрабатывает запросы и отправляет ответ, который передается веб-сервером веб-клиенту [браузеру].

Также вы можете проверить эту ссылку для уточнения: -

https://sites.google.com/site/sureshdevang/servlet-architecture

Также проверьте этот ответ для дальнейшего исследования: -

https://softwareengineering.stackexchange.com/a/221092

12

Если вы используете Java-технологию (Servlet/JSP) для создания веб-приложения, вы, вероятно, будете использовать Apache Tomcat. Однако, если вы используете другие технологии, такие как Perl, PHP или ruby, лучше (проще) использовать Apache HTTP Server.

  • 8
    Этот ответ не имеет смысла для меня. Первое предложение неверно в том смысле, что помимо Tomcat есть много других контейнеров Servlet / JSP, некоторые довольно популярные, такие как Jetty, JBoss / Wildfly, Glassfish, WebSphere и многие другие. Несмотря на популярность, Tomcat не доминирует, имея лишь небольшую долю рынка. Что касается второго предложения, Tomcat часто используется в качестве контейнера сервлета за Apache HTTP Server. И PHP и т. Д. Часто используются с несколькими другими веб-серверами, такими как Nginx, Lighttpd и другие.
3

Ну, Apache - это веб-сервер HTTP, где Tomcat также является веб-сервером для Servlets и JSP. Кроме того, Apache предпочитает Apache Tomcat в режиме реального времени

  • 17
    Этот вопрос довольно старый, и ваш ответ, кажется, дублирует те, которые были опубликованы давно. Ответы приветствуются, но новые ответы должны помочь добавить к разговору.
0

Apache - это веб-сервер HTTP, который служит HTTP, но apache tomcat представляет собой контейнер сервлета Java, ОСОБЕННОСТИ ИТ То же, что и веб-сервер, настроенный для выполнения Java-сервлета и страниц JSP.

  • 5
    Этот ответ немного сбивает с толку
  • 1
    да, ответ немного запутанный, так как @ Basil Bourque сказал выше: «Койот - это модуль в Tomcat, отвечающий за веб-обслуживание, Catalina - это модуль, выполняющий сервлеты. А Jasper - это модуль, который обрабатывает JSP», теперь он дает ясность о том, как «ОСОБЕННОСТИ TOMCAT как веб-сервер, настроенный для выполнения страниц сервлетов Java и JSP !!!! "

Ещё вопросы

Сообщество Overcoder
Наверх
Меню