2012-09-18 17 views
5

Tengo alguna pregunta sobre el modelo de implementación para una aplicación web Java EE. Actualmente estamos implementando nuestra aplicación web como un archivo WAR en Tomcat 6. Todo el contenido está empaquetado con el archivo WAR, incluido el contenido estático como imágenes, páginas html estáticas, etc. Pero quiero implementar estos contenidos estáticos en un servidor HTTP y usar el servidor de aplicaciones solo para recuperar el contenido dinámico. ¿Cómo divido estas cosas? ¿Alguien ha hecho algo de este tipo y tiene un buen modelo de implementación para mi escenario? La ayuda será apreciada.Cómo usar el servidor http y el servidor de aplicaciones en una aplicación web java

¿Es una buena idea hacer 2 archivos WAR uno con solo contenido estático e implementar ese WAR en el servidor HTTP y el resto como un archivo WAR diferente y desplegarlo en el servidor de aplicaciones? Pero este enfoque tendrá un impacto en todas las páginas donde el contenido estático se refiere actualmente y requiere cambios de código, lo cual es muy engorroso, ya que nuestro proyecto es enorme y el código basado es muy grande.

Cualquier estrategia e idea son bienvenidas.

+0

¿Por qué quiere dividir contenido estático y dinámico? ¿Es una consideración organizacional o quieres mejorar el rendimiento? –

+0

Gracias por los comentarios y agradezco los comentarios de todos y cada uno. Buena curva de aprendizaje para mí. Quiero usar el servidor HTTP y el servidor de aplicaciones para mejorar el rendimiento de mi aplicación web. He estado leyendo un libro llamado "Análisis de rendimiento para sitios web Java ™" desde hace un tiempo. Y me recomienda que coloque mi contenido estático en el servidor HTTP y el contenido dinámico en el servidor de aplicaciones. Pero no estoy al tanto de cómo hacerlo prácticamente. Todo lo que sé es cómo crear un archivo WAR e implementarlo en Tomcat, que es un servidor de aplicaciones que estamos utilizando para nuestra implementación. –

+0

Entonces mi pregunta se puede modificar de la siguiente manera. ¿Cómo despliego mi contenido estático en un servidor HTTP? Si recibo ayuda sobre esto, puedo continuar y eliminar todo mi contenido estático del archivo WAR y desplegarlo en el servidor HTTP y el resto de los archivos dentro de WAR en el servidor de aplicaciones. –

Respuesta

1

Esto puede ser algo interesante que hacer por motivos de rendimiento.

Debe tener scripts de implementación/archivos de implementación separados para hacer esto. Tener múltiples archivos/WAR/carpeta/scripts para implementar para un proyecto no es un problema. Tenemos lo mismo cuando tiene que desplegar su WAR y actualizar su base de datos.

Tendría un archivo WAR y una carpeta con su contenido estático para implementar.


Editar

Implementación del contenido estático en un servidor HTTP depende del servidor. Si desea utilizar Apache en un servidor Linux, debe configurar un Virtual Host.

<VirtualHost *:80> 
    # This first-listed virtual host is also the default for *:80 
    ServerName www.example.com 
    DocumentRoot /www/domain 
</VirtualHost> 

En este ejemplo, usted tiene el que una máquina virtual que escucha en el puerto 80, para cualquier dirección IP y el nombre del servidor www.example.com. Luego, esto se redirige a la ruta /www/domain.

Encontrará muchos más ejemplos y opciones de configuración en la documentación.

+0

¿Cómo despliego mi contenido estático en un servidor HTTP? Si recibo ayuda sobre esto, puedo continuar y eliminar todo mi contenido estático del archivo WAR y desplegarlo en el servidor HTTP y el resto de los archivos dentro de WAR en el servidor de aplicaciones. –

0

No puede implementar el archivo WAR en el servidor HTTP. Se utiliza un WAR para las aplicaciones web Java. Debe implementarse en el servidor de aplicaciones o el contenedor de servlets (como Tomcat). No creo que sea una buena idea separar contenido estático en una aplicación web separada. Si se trata de un proyecto que debe ser una aplicación web, además:

Un archivo WAR tiene una estructura de carpetas especial y contiene archivos especiales además de las páginas JSP, servlets Java, las clases de Java, páginas HTML, etc. que combina una aplicación web.

Puede mantener sus contenidos estáticos en su única aplicación y no tiene nada de malo en ello.

Si su proyecto es muy grande y tiene muchos archivos, no hay problema, solo necesita usar la estructura del proyecto así, debe ser fácil de entender y leer y el servidor de aplicaciones o el contenedor de servlets se encargarán de desplegar tantos contenidos como hay.

+0

Agradezco sus entradas ... Pero mi requisito es implementar mi contenido estático en un servidor HTTP para mejorar el rendimiento de mi aplicación web. No estoy seguro de cómo agrupar e implementar el contenido estático en el servidor HTTP y acceder a él desde los JSP dentro de un archivo WAR desplegado en un contenedor Tomcat. Cualquier ayuda sobre esto será genial ... –

0

Hasta la versión 4, Tomcat ha sido bastante lento en el servicio de contenido estático. Es por esto que con frecuencia se recomendaba dividir el contenido dinámico del estático y servirlo utilizando un servidor web normal (el libro que usted mencionó se emitió en 2002 ...). Las versiones recientes de Tomcat no se enfrentan a este problema, por lo que puede en mi humilde opinión abstenerse de dividir, lo que puede ser una pesadilla para la organización y la seguridad.

Para recursos estáticos, puede que prefiera centrarse en configurar el almacenamiento en caché adecuado, para que no se transfieran con más frecuencia de la necesaria.

+0

Sí, el almacenamiento en caché es otra área que también quería ver. De hecho, ya comenzamos a buscar consultas relacionadas con tablas maestras usadas con frecuencia y algunos métodos de almacenamiento en caché. Un enfoque es cargar los resultados de estas consultas en la memoria durante el tiempo de inicio de la aplicación web y usarlo. Una cuestión es actualizar las cosas en la memoria cuando los datos de la tabla maestra cambian ... Pero analizaremos este problema de almacenamiento en caché por separado ... solo quería compartir que también estamos investigando ese aspecto ... –

+0

Datos de almacenamiento en caché de db es un problema diferente: quise configurar los encabezados de caché para los recursos estáticos en el servidor web, por lo que los navegadores solo los buscarán una vez. –

Cuestiones relacionadas