2011-01-12 12 views
138

Parece ser la vieja pregunta (que es :)) qué servidor es mejor entre Tomcat y JBoss, pero aún no he encontrado una respuesta suficientemente buena para resolver mi problema.JBoss vs Tomcat nuevamente

Sé que Tomcat es solo un servlet engine y JBoss ofrece muchas más funcionalidades de fábrica, pero lo que no entiendo es por qué Tomcat es mejor usar en algunas situaciones que en jboss. Leí en alguna parte que JBoss tiene una arquitectura conectable y, si es necesario, puede desconectar funciones de JBoss para convertirlo esencialmente en un contenedor de servlets tomcat. Si ese es el caso, entonces ¿no es mejor hacerlo en lugar de utilizar Tomcat, para dejar espacio para volver a conectar las cosas?

Otra explicación que encuentro a favor de Tomcat es que es liviana, significa menos necesidad de memoria o permite una respuesta más rápida. De nuevo, necesito saber que no cargará los componentes de jboss según los requisitos, es decir, si solo estoy utilizando servlets, entonces no saltará el resto de las funciones y se convertirá en ligero de forma automática.

Básicamente, mi aplicación no tiene ninguna característica Java EE, pero los argumentos 'ligeros' a favor de Tomcat no suenan lo suficientemente convincentes debido a las razones mencionadas anteriormente.

Por favor ayuda.

Editar: Finalmente habíamos decidido usar tomcat en aquel entonces y lo hemos estado utilizando durante más de 6 meses con gran facilidad de uso. De hecho, encontramos un uso práctico en el que podíamos ejecutar fácilmente múltiples instancias de tomcat en la misma máquina servidor para diferentes desarrolladores, lo mismo podría haber sido muy difícil con jboss.

He encontrado que tomcat es sin problemas para nuestro trabajo y, por lo tanto, puede ser la elección correcta cuando no se utilizan muchas de las características de Java EE. PS: Tenga en cuenta que todavía utilizamos Spring e Hibernate con Tomcat

+1

Uhh no integra JBoss con Tomcat? – Navi

+4

@Navi: No realmente. Contiene una versión bifurcada de la base de código de Tomcat, pero ha divergido bastante. – skaffman

+0

@skaffman Ok, entonces supongo que lo que tenemos que hacer es descubrir qué son las divergencias ... – Navi

Respuesta

132

Primero los hechos, tampoco es mejor. Como ya lo mencionó, Tomcat proporciona un contenedor de servlets que admite la especificación de Servlet (Tomcat 7 admite Servlet 3.0). JBoss AS, un servidor de aplicaciones "completo" es compatible con Java EE 6 (incluido Servlet 3.0) en su versión actual.

Tomcat es bastante liviano y en caso de que necesite ciertas características Java EE más allá de la API de Servlet, puede mejorar fácilmente Tomcat al proporcionar las bibliotecas requeridas como parte de su aplicación. Por ejemplo, si necesita funciones JPA, puede incluir Hibernate o OpenEJB y JPA funciona casi de fábrica.

Cómo decidir si utilizar Tomcat o una pila Java EE servidor de aplicaciones completo:

Al iniciar su proyecto en el que debe tener una idea de lo que se requiere. Si estás en un gran entorno empresarial JBoss (o cualquier otro servidor Java EE) podría ser la mejor opción, ya que proporciona soporte integrado para, por ejemplo:

  1. mensajería JMS asíncrona para la integración
  2. Servicios Web del motor (JAX-WS y/o JAX-RS)
  3. Capacidades de administración como JMX y una interfaz de administración con guiones
  4. Seguridad avanzada, por ejemplo fuera-de-la-caja de la integración con directorios de 3 ª parte
  5. archivo EAR
  6. en lugar de "sólo" el soporte de archivos WAR
  7. todos los otros "grandes" características de Java EE no puedo recordar :-)

En mi opinión Tomcat encaja muy bien si se trata de aplicaciones centradas en la web y orientadas al usuario. Si la integración de back-end entra en juego, se debe considerar (al menos) un servidor de aplicaciones Java EE. Por último, pero no menos importante, migrar una WAR desarrollada para Tomcat a JBoss debería ser un ejercicio de 1 día.

En segundo lugar, también debe tener en cuenta el uso dentro de su entorno. En caso de que su organización ya se ejecute, digamos 1,000 instancias de JBoss, usted siempre puede ir con eso, independientemente de sus requisitos concretos (considere aspectos como el costo de las operaciones o el aumento de personal). Por supuesto, esto aplica a la inversa.

mi 2 céntimos

6

Estrictamente hablando; Sin ninguna característica Java EE su aplicación apenas necesita un servidor de aplicaciones ;-)

Como otros han señalado, JBoss tiene una pila de Java EE (más o menos) completa, mientras que Tomcat solo es un contenedor web. JBoss se puede configurar para que solo sirva como un contenedor web también, simplemente sería una capa delgada alrededor del contenedor web tomcat incluido. De esta forma, podría tener un JBoss casi tan ligero, que en realidad sería una "capa" delgada alrededor de Tomcat. Eso sería casi tan ligero.

Si no necesita ninguno de los extras que JBoss tiene para ofrecer, elija el que le resulte más cómodo. ¿Cuál es más fácil de configurar y mantener para usted?

+1

qué tan difícil es usar servicios web y jmx con tomcat, ¿pueden proporcionarnos algunas buenas referencias/enlaces? – Ashish

2

También he leído que para algunos servidores uno, por ejemplo, sólo necesita anotar los contextos de persistencia, pero en algunos servidores, la inyección debe hacerse manualmente.

12

Tome un vistazo a TOMEE

Tiene todas las características que usted necesita para construir una completa aplicación Java EE.

7

Definitivamente miraré a TomEE ya que la idea detrás es mantener a Tomcat sin la integración de JavaEE 6 por defecto. Es un tipo de compromiso muy bueno