2008-08-27 34 views
510

¿Cuál es la diferencia en términos de funcionalidad entre Apache HTTP Server y Apache Tomcat?Diferencia entre Apache HTTP Server y Apache Tomcat?

Sé que Tomcat está escrito en Java y el servidor HTTP está en C, pero aparte de eso, realmente no sé cómo se distinguen. ¿Tienen diferentes funcionalidades?

+10

he añadido un resumen en mi blog, tal vez ayude a alguien: http://www.tugay.biz/2014/11 /what-is-tomcat-is-it-web-server-what.html –

+13

Me preguntaba exactamente qué estaba preguntando el OP, y no veo por qué estaba cerrado. Afortunadamente hay respuestas. –

Respuesta

361

Apache Tomcat se usa para implementar los servlets Java y JSP. Entonces, en su proyecto Java puede construir su archivo WAR (abreviatura de Web ARchive) y simplemente colocarlo en el directorio de despliegue en Tomcat.

Así que, básicamente, Apache es un servidor HTTP que presta servicios a HTTP. Tomcat es un servidor Servlet y JSP que sirve tecnologías Java.

Tomcat es un contenedor de servlet. Un servlet, al final, es una clase de Java. Los archivos JSP (que son similares a PHP y archivos ASP más antiguos) se generan en código Java (HttpServlet), que luego el servidor compila a archivos .class y la máquina virtual Java los ejecuta.

+1

Sé que las secuencias de comandos de Perl se pueden ejecutar en tomcat. ¿No es esto verdad? – serengeti12

+32

¿Qué quiere decir con "Apache está [...] sirviendo HTTP"? ¿Tomcat tampoco está sirviendo (hipertexto) HTTP? ¿Por qué no puede Tomcat simplemente ser un módulo Apache "mod_java"? ¿Puedes explicar? – Peterino

+26

Tomcat es un contenedor de servlet. Un servlet, al final, es una clase de Java. Los archivos JSP (que son similares a los archivos PHP oder ASP) se generan en el código Java (HttpServlet), que luego el servidor compila a los archivos .class y la máquina virtual Java los ejecuta. - Aparte de eso, este foro aquí explica bastante bien la diferencia entre Apache HTTPD y Tomcat: http://www.coderanch.com/t/85182/Tomcat/difference-between-Apache-HTTP-server – Peterino

20

Tomcat es principalmente un servidor de aplicaciones, que atiende solicitudes de servlets Java personalizados o archivos JSP en su servidor. Usualmente se usa junto con el servidor Apache HTTP (al menos en mi experiencia). Úselo para procesar manualmente las solicitudes entrantes.

El servidor HTTP, por sí mismo, es el mejor para que sirve contenido estático ... archivos html, imágenes, etc.

+8

Dudo 'Tomcat es principalmente una declaración del servidor de aplicaciones'. – Rachel

+4

tomcat está principalmente * destinado * a ser un servidor de aplicaciones. aunque * también * contiene contenido estático del servidor. – Scalable

+0

Sí Tomcat es principalmente un servidor de aplicaciones, si el término se entiende en el sentido de un contenedor Servlet que genera contenido dinámico entregado a los navegadores web. Como uno de los primeros contenedores Servlet, esa es la razón de ser de Tomcat. –

90

Además de las buenas respuestas anteriores, creo que debería decirse que Tomcat tiene su propio servidor HTTP incorporado y es totalmente funcional para servir contenido estático también. Dependiendo de la configuración de su máquina virtual java, en realidad puede superar el desempeño de los conectores tradicionales en apache como mod_proxy y mod_jk.

Dicho esto, un servidor Tomcat totalmente optimizado debe servir rápidamente a los archivos estáticos y si tiene servlets Java, JSP y archivos ColdFusion además de contenido estático, puede que tomcat haga un excelente trabajo por sí mismo.

+1

Es cierto. Y muchas personas todavía usan una configuración Apache adicional además de su Tomcat ... que es innecesario en la mayoría de los casos. –

+1

La parte más poderosa de apache http que pocos otros servidores admiten es la capacidad de redirigir y reescribir la solicitud antes de que la aplicación tenga que verla, concretamente a través del motor 'mod_rewrite' y la inyección de entorno condicional. 'mod_proxy' proporciona un equilibrio de carga rudimentario (y combinado con mod_jk proporciona una sesión pegajosa rudimentaria/estado compartido entre instancias de tomcat de carga equilibrada). – cowbert

9

Si está utilizando la tecnología Java (Servlet/JSP) para hacer aplicaciones web, probablemente utilice Apache Tomcat. Sin embargo, si está utilizando otras tecnologías como Perl, PHP o ruby, es mejor (más fácil) utilizar Apache HTTP Server.

+5

Esta respuesta no tiene sentido para mí. La primera oración es incorrecta porque hay muchos otros contenedores Servlet/JSP además de Tomcat, algunos muy populares como Jetty, JBoss/Wildfly, Glassfish, WebSphere y muchos más. Mientras popular, Tomcat no domina, con solo una minoría de cuota de mercado. En cuanto a la segunda oración, Tomcat se usa a menudo como un contenedor Servlet detrás del Servidor HTTP Apache. Y PHP, etc. [a menudo se usan con muchos otros servidores web] (http://en.m.wikipedia.org/wiki/PHP#Use) como Nginx, Lighttpd y otros. –

-1

Apache es un servidor web HTTP que sirve como HTTP pero apache tomcat es un contenedor de servlets java, TI FUNCIONA Igual que el servidor web personalizado para ejecutar las páginas JSP y Java Servlet.

+4

Esta respuesta es un poco confusa – mac

+1

sí, la respuesta es un tanto confusa como dijo @ Basil Bourque "Coyote es el módulo en Tomcat responsable de la publicación web, Catalina es el módulo que hace Servlets y Jasper es el módulo que maneja los JSP" ahora da claridad sobre cómo "TOMCAT CARACTERÍSTICAS Igual que el servidor web personalizado para ejecutar el servlet de Java y las páginas JSP !!!!" – Dev

60
  1. Apache es un servidor http de propósito general, que admite varias opciones avanzadas que Tomcat no tiene.
  2. Aunque Tomcat se puede utilizar como servidor http de propósito general, también puede configurar Apache y Tomcat para que funcionen junto con Apache, que sirve contenido estático y reenvía las solicitudes de contenido dinámico a Tomcat.
+0

¿No está todo web estático al final? Según entiendo, Tomcat genera "un" contenido estático (dinámicamente) y luego Apache lo servirá. Por lo tanto, Tomcat nunca publicará contenido dinámico ni nada, solo lo generará cuando sea necesario. –

+7

@KorayTugay Estás confundiendo tus términos. "Generarlo cuando sea necesario" es exactamente lo que significa "dinámico", y es lo opuesto a "estático". El objetivo principal del Servidor Apache HTTP es servir contenido estático, mientras que el objetivo principal de la tecnología Servlet es generar contenido sobre la marcha (contenido dinámico). –

+1

@BasilBourque Me confundieron con Tomcat que actualmente publica contenido aquí. Solo generará el contenido, no lo servirá cuando se use junto con el servidor Apache Http. Probablemente tengas razón y estoy confundido, pero a mí me gustaría decir que, cuando se usan juntos, Apache sirve, Tomcat genera contenido estático cuando es necesario. Si no se utiliza Apache, Coyote en Tomcat lo hará, mientras que Catalina y Jesper están generando el contenido dinámico. –

2

Bueno, Apache es un servidor web HTTP, donde como Tomcat también es un servidor web para Servlets y JSP. Además, Apache se prefiere a Apache Tomcat en tiempo real

+14

Esta pregunta es bastante antigua, y su respuesta parece duplicar las que se han publicado hace mucho tiempo. Las respuestas son apreciadas pero las nuevas respuestas deberían ayudar a agregar a la conversación. – GargantuChet

14

un servidor apache es un servidor http que puede servir cualquier solicitud HTTP simple, donde el servidor tomcat es en realidad un contenedor servlet que puede atender solicitudes Java Servelt.

El servidor web [apache] procesa el cliente web (navegadores web) y lo reenvía al contenedor servlet [tomcat] y el contenedor procesa las solicitudes y envía la respuesta que el servidor web envía al cliente web [navegador].

También puede comprobar este enlace para más aclaración: -

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