2012-01-31 12 views
11

Tengo una aplicación Java 1.6 implementada en varias máquinas (~ 30) y comencé como un servicio de Windows.¿Cómo actualizar automáticamente una aplicación Java durante su inicio?

Mi problema principal se refiere al mantenimiento de estos artefactos desplegados: si desarrollo una nueva versión de esta aplicación, no quiero volver a implementarla manualmente en cada máquina.

Idealmente, cuando se inicia el servicio de Windows, comprueba en un servidor remoto si existe una actualización, y si se encuentra, entonces actualiza la aplicación. Tenga en cuenta que, después de esta actualización, es aceptable que el servicio deba reiniciarse nuevamente.

Este mecanismo se puede comparar con la verificación de instantáneas Maven: si hay una versión más reciente de una versión SNAPSHOT en un repositorio remoto, entonces Maven la descarga antes de ejecutarla. Tenga en cuenta que la aplicación se implementará en un repositorio de Maven (en nuestro caso, Nexus), por lo que la comprobación de una actualización se realizará contra esta instancia de Nexus.

¿Cuáles son mis soluciones técnicas para implementar dicha actualización automática de la aplicación?

No dude en preguntarme más detalles acerca de la información técnica o sobre el contexto ...

Gracias.


Edición: Según lo indicado por Peter Lawrey, puedo utilizar Java Web Start. Sin embargo, ¿cómo puedo integrar JWS dentro de una aplicación Java que se ejecuta como un servicio de Windows?

+0

Esto no es un problema de Java. Más de administración de implementación. – Santosh

+0

Si bien como está redactado no es realmente un problema de Java, no veo cómo una versión ligeramente más genérica del problema (asegurando que la versión iniciada sea siempre la versión más reciente disponible) no se puede resolver en Java. ¿Una salida de la carga de clase de red, tal vez? –

+0

@Santosh sí y no. Windows, especialmente los que estamos usando aquí, no proporciona las herramientas necesarias para facilitar dicho procedimiento. Dame Linux, ssh o algunos scripts bash, y estaré contento :) – romaintaz

Respuesta

4

Me gustaría ver Java Web Start

+0

JWS fue una de mis ideas, pero no tuve éxito en hacerlo funcionar como esperaba. Uno de mis problemas es que la aplicación debe ejecutarse como un servicio de Windows, y JWS inicia otra JVM para la aplicación. Por lo tanto, el servicio de Windows se detendrá una vez que se inicie la JVM iniciada por JWS. – romaintaz

1

Una técnica común para esto es utilizar un lanzador. Los pasos son algo como esto:

  1. Inicie el iniciador.
  2. El iniciador comprueba si la aplicación debe actualizarse. En caso afirmativo, el iniciador actualiza la aplicación (pienso en esto como "el paso de actualización").
  3. Después del paso de actualización, el iniciador ejecuta la aplicación.
Cuestiones relacionadas