2012-07-11 13 views
7

¿Existen pilas de administración de aplicaciones bien integradas que permitan la compilación, la implementación y la actualización de aplicaciones Java que no sean .war que se ejecutan como servidores? Por ejemplo, consumidores de mensajes que son servidores (pero no servidores web y no tienen servlets), o ejecutables .jar s con Jetty incrustado?Implementación de aplicaciones de servidor Java que no son .wars

Creación e implementación de .war s es bastante sencillo: Maven tiene el arquetipo guerra, Jenkins tiene un montón de complementos para el despliegue de .war archivos a varios servidores de aplicaciones, la mayoría de los cuales aceptan la carga de nuevas aplicaciones web en tiempo de ejecución. Herramientas como Elastic Beanstalk hacen que este proceso sea aún más fácil, atando la administración de los entornos del servidor.

Por el contrario, al implementar el ejecutable .jar s parece que reinventar la rueda. Es necesario resolver la mejor forma de sombrear las dependencias y crear un artefacto ejecutable con una gran cantidad de complementos Maven, depositar este artefacto en algún lugar, luego encontrar una forma de instalarlo en los servidores de destino y reemplazarlo/actualizarlo si es necesario (paquetes Debian) sería una forma de hacer esto).

Todo esto me parece muy 'manual', hasta el punto de que parece ventajoso implementar aplicaciones como .war en servidores de aplicaciones, incluso si no son un ajuste natural para dicho entorno, solo para que obtenga el beneficio del soporte de la herramienta.

+0

para consumidores de mensajes, ¿Sería EJBs MessageDriven una buena opción? Esos podrían publicarse en un servidor de aplicaciones como un JAR. – wrschneider

+0

Bien podrían ser, desafortunadamente estoy en una pequeña empresa que considera que todo "peso pesado" es obra de Satanás. –

Respuesta

4

Puede implementar esto desplegando sus aplicaciones en un contenedor de osgi.

Puede conectar el ciclo de vida de osgi para ejecutar su aplicación cuando se inicia el paquete osgi. Luego puede iniciar y detener remotamente el contenedor (si el contenedor lo admite).

Sus aplicaciones podrían definir sus dependencias como parte del manifiesto de osgi, pero sombrear tarros usando el plugin de sombra no es difícil cuando se usa maven y creo que sería más fácil de administrar que manejar cientos de frascos en su contenedor.

This question habla sobre la implementación continua de paquetes de osgi utilizando jenkins.

Una forma alternativa (y más estándar) sería escribir scripts que automaticen la implementación, posiblemente utilizando herramientas diseñadas específicamente como puppet o chef. Hay un maven plugin para títere que le permite extraer artefactos de un repositorio maven para usar en sus scripts de títeres.

Marioneta o Chef en ejecución de jenkins es trivial y si lo desea, puede proporcionar acceso a las compilaciones de implementación a miembros del personal no técnico, para permitirles implementar nuevas compilaciones en un entorno con un clic de un botón.

Como @bagheera sugiere construir rpms de sus aplicaciones y comenzarlas como servicios es un buen camino a seguir y reduce la complejidad de sus scripts de implementación.

+0

Gracias por la respuesta. Investigaré OSGi.Con respecto a escribir guiones, este era generalmente el enfoque que esperaba evitar, pero parece que eso podría no ser posible. –

+0

Si empareja la escritura de scripts con la sugerencia de rpm, entonces los scripts son muy simples 1.) descargue las rpm del repositorio maven 2.) instale las rpm. Esta [presentación de diapositivas] (http://www.slideshare.net/actionjackx/automated-java-deployments-with-rpm) muestra qué tan simples se vuelven los scripts después de usar rpms, usa webapps como su ejemplo, pero los jar son tan válidos . – plasma147

3

Parece que está buscando un administrador de dependencias para construir su jar ejecutable autónomo, y un administrador de paquetes para la implementación. Además de las herramientas que ha mencionado, puede consultar ant+ivy para build + dependency mgmt y rpmbuild + rpm + yum para la administración de paquetes en Linux.

Cuestiones relacionadas