ventajas sirve servlet que para instalar ejemplo desventajas desplegar aplicacion animal tomcat war

sirve - implementando mĂșltiples aplicaciones a Tomcat



tomcat ventajas y desventajas (3)

No es necesario cambiar los puertos

Hacer malabares con múltiples solicitudes entrantes y respuestas salientes entre muchos usuarios utilizando cualquiera de las múltiples aplicaciones web en ejecución es el propósito de la tecnología Java Servlet. Todo ese tráfico se puede manejar en un solo puerto.

Simplemente coloque ambos archivos war en la carpeta webapps de Tomcat. Eso es todo lo que necesitas hacer.

De forma predeterminada, Tomcat amplía ("explota" a algunos) cada guerra (técnicamente un archivo zip) en una carpeta y automáticamente implementa la aplicación por usted. Esto sucede sobre la marcha si Tomcat ya se está ejecutando, o en el inicio cuando se inicia Tomcat. Algunas personas desactivan la función de despliegue automático para producción y le ahorran a Tomcat el trabajo de buscar nuevos archivos de guerra.

No hay necesidad de puertos múltiples. El trabajo de un contenedor de servlets es examinar la URL y determinar qué servlet debe invocarse.

Por defecto, el nombre del archivo war determina la URL. Dado tu ejemplo:

Todas las aplicaciones web se pueden servir en el mismo puerto. Su única preocupación con los puertos es si usa un sistema operativo estilo Unix que proteja el acceso a los puertos de bajo número. Esto incluye Mac OS X, BSD, Linux y Solaris. Use un puerto con un número alto en su URL (Tomcat se establece de manera predeterminada en 8080) o use port-forwarding para enviar solicitudes entrantes en el puerto 80 (predeterminado de los navegadores web) al puerto de Tomcat (como 8080).

Si desea que se sirvan los archivos war utilizando diferentes dominios, obtenga información sobre la configuración de "host virtual" en Tomcat.

Quiero implementar dos aplicaciones foo.war y bar.war en la misma instancia de Tomcat. ¿Es posible que escuchen las conexiones en diferentes puertos, por ejemplo, foo escucha en el puerto 81 y la barra escucha en el puerto 82? Si es así, ¿cómo puedo configurar esto? Me doy cuenta de que no es necesario que las aplicaciones escuchen en diferentes puertos, pero eso es lo que quiero lograr.

Además, tengo razón al decir que si cambio el nombre de foo.war a ROOT.war manera que se ejecute en el contexto raíz, entonces todas las solicitudes a esta instancia de Tomcat serán manejadas por la aplicación foo y, por lo tanto, la barra debería implementarse en una instancia separada de Tomcat?


He configurado con éxito Tomcat para ejecutar aplicaciones en múltiples puertos. No sé si esta es la mejor manera de hacerlo, pero simplemente dupliqué el contenido de

<Service>...</Service>

en conf / server.xml y cambió los puertos para las etiquetas de Connector y cambió el atributo appBase de la etiqueta de Host . Usted controla en qué puerto se ejecuta su aplicación en función de la aplicación en la que se implementa.


Si desea que Tomcat escuche varios puertos, debe configurar un conector para cada puerto. Para hacer que cada puerto se asigne a una aplicación diferente, es necesario que ajuste cada conector en un servicio y cree un host con su propia aplicación appBase .

Ejemplo de definición de servicio en server.xml :

<Service name="foo"> <Connector port="80" protocol="org.apache.coyote.http11.Http11NioProtocol" /> <Engine name="Catalina80" defaultHost="localhost"> <Host name="localhost" appBase="foo" unpackWARs="true" autoDeploy="true" /> </Engine> </Service> <Service name="bar"> <Connector port="81" protocol="org.apache.coyote.http11.Http11NioProtocol" /> <Engine name="Catalina81" defaultHost="localhost"> <Host name="localhost" appBase="bar" unpackWARs="true" autoDeploy="true" /> </Engine> </Service>

En lugar de descartar los archivos war en el directorio webapps , debe crear el directorio foo para el puerto 80 y la bar para el puerto 81 . Nombre ambos archivos de guerra ROOT.war y colóquelos en su propio directorio base. Por supuesto, puede tener múltiples aplicaciones en cada directorio si lo necesita.

El directorio definido en appBase es relativo al directorio de tomcat. Al usar una ruta absoluta, podría estar en cualquier parte de su sistema. De la documentation :

appBase

El directorio de la Base de aplicaciones para este host virtual. Esta es la ruta de acceso de un directorio que puede contener aplicaciones web para implementarse en este host virtual. Puede especificar una ruta de acceso absoluta, o una ruta de acceso que sea relativa al directorio $CATALINA_BASE . [...] Si no se especifica, se usará el predeterminado de webapps .

Otra opción es mantener la configuración predeterminada de tomcat y usar otro servidor http (apache, nginx, lighttpd, ...) para asignar un puerto a la ruta interna de una aplicación tomcat.

La aplicación raíz no recibirá solicitudes que coincidan con otras aplicaciones, por ejemplo /foo/example irá a foo.war , /example/example irá a ROOT.war .