2011-07-15 14 views
14

Una pregunta muy simple. Tengo un archivo .war (~ 40MB) para ejecutar en JBoss. ¿Cuál es la mejor práctica para la implementación: ¿Debería implementarse el archivo de guerra en formato desglosado? ¿O no?Despliegue de webapp de Java: explotar o no explotar?

Lo pregunto porque si se destruye, entonces tengo la opción de actualizar mi archivo de propiedades en cualquier momento que elija (y no necesito hacer una nueva guerra cada vez que cambio el archivo de propiedades).

Pero no estoy seguro si implementar una guerra en formato de explosión es la mejor práctica.

Por favor, ayúdenme a darme cuenta. :)

+0

Además, ¿quién decidió llamarlo 'explotado' en lugar de 'extraído'? Claro que es más divertido, pero nosotros, de todas las personas, deberíamos llamar a una cosa lo que es :). – bbarker

Respuesta

8

La modificación del contenido desglosado es ciertamente más rápida y más eficiente, pero una consideración es la auditoría y la rastreabilidad. Una ventaja de solo desplegar archivos WAR y tratarlos como "sellados" es que cualquier cambio que realice tendrá que ser capturado en su sistema de administración de código fuente. Ciertamente no desea que las personas tengan la capacidad de cambiar lo que deseen en la configuración de su aplicación sin algún tipo de pista de auditoría.

La separación de preocupaciones de Java EE generalmente significa que el desarrollador de WAR no es la misma persona que el administrador del servidor de aplicaciones. Si el desarrollador no tiene acceso directo, eso significa que las personas que no conocen la aplicación a fondo están haciendo cambios.

No defiendo la mentalidad extrema que prohíbe a los desarrolladores modificar un WAR explosivo, simplemente señalando una vista alternativa para su consideración.

+0

Gracias @duffymo. Lo consideraré. Sin embargo, en base a mis requisitos, hasta ahora el equilibrio se inclina hacia explotar. – pavanlimo

+0

Unos años más tarde, creo que esta es la respuesta más adecuada para la pregunta. La respuesta es: no explotes a menos que realmente lo necesites. – pavanlimo

1

Si necesita cambiar la configuración dentro de su .war sin volver a desplegar, preferiría implementar Despliegue. De lo contrario, preferiría desplegar el archivo (entonces el jboss extraerá el archivo en tmp/deploy/..)

+1

¿Pero está "bien" desplegar en formato de explosión para el entorno de producción? – pavanlimo

+2

sí, por supuesto. Muchos otros editores hacen esto también (por ejemplo, TeamCity, Hyperic HQ, ...) – powerMicha

+0

Gracias @powerMicha por ese poco de información. Por casualidad, ¿conoce algún documento o artículo que describa las mejores prácticas para el despliegue de la aplicación web java? – pavanlimo

14

¿Debería implementarse el archivo war en formato desglosado? ¿O no?

Esto haría depende de varios factores:

  • Va a requerir que los administradores del servidor de aplicaciones modifican el contenido del archivo WAR después de la implementación? Si la respuesta es afirmativa, especialmente en los casos en los que se trata de archivos de propiedades o de configuración, entonces debe utilizar un formato descompuesto. Esto facilitaría la realización de cambios en los archivos, sin necesidad de volver a implementar el archivo WAR completo.
  • ¿Cómo se propagan los cambios a la producción? Si no está compilando previamente sus archivos JSP, y si tiene la intención de implementar versiones más nuevas de JSP copiándolos en el área que contiene el archivo WAR que ha estallado, entonces es bastante obvio que no es necesario volver a desplegar un enorme archivo WAR. una solución óptima. Sin embargo, tenga en cuenta que esto dependerá de sus prácticas de implementación. A menudo, es más fácil auditar que el archivo WAR en producción es una réplica de una compilación generada desde el control de la versión, con un solo hash del archivo WAR. Si implementa cambios incrementales, encontrará que se requerirán hash para cada archivo implementado.
  • ¿Qué tan pronto desea que su aplicación se implemente y esté disponible? Este punto es trivial, pero hay suficientes instancias de aplicaciones que tardan varios minutos en iniciarse porque el servidor de aplicaciones está ocupado explotando el archivo WAR y recreando los artefactos necesarios. Esto podría ocasionar un tiempo de inactividad significativo, si el comportamiento del servidor es explotar el archivo WAR en cada reinicio del servidor de aplicaciones. Como desconozco el comportamiento de JBoss o la versión específica en cuestión, le sugiero que verifique esto por su cuenta, para asegurarse de que puede limitar el tiempo de inactividad a un nivel aceptable.
+0

Eso fue bastante elaborado. Gracias Vineet. – pavanlimo

+0

@pavanlimo, de nada. –

0

Se explota de todos modos por lo que puede alterar las propiedades, incluso si se implementa como la guerra ... no hace ninguna diferencia. En el entorno de desarrollo al menos.

Sin embargo, si está desplegando en formato de explosión a la producción para que pueda modificar las propiedades de los archivos, ¿no es el problema mayor el que necesita para cambiar las propiedades (de producción) después de la implementación? Y no si has usado una guerra o no.

+0

No pude entenderlo con claridad, pero si reinicia el servidor, el archivo de propiedad modificado se reemplaza por el archivo de propiedad original, ya que el desligamiento ocurre en una ubicación temporal. – pavanlimo

+0

@pavanlimo Lo sé, hemos cambiado el archivo en la ubicación temporal durante el desarrollo. No estoy seguro si estás haciendo esto en desarrollo o producción. Mi punto es que debe ver por qué está cambiando las propiedades en un entorno de producción (si es así). Si estás hablando de dev, no es importante, imho, pero prefiero las guerras. – NimChimpsky

Cuestiones relacionadas