View Source

{section}
{column}
The general concept is continuous production where nodes upgrade application and configuration automatically. Which application version and configuration each node should run is controlled by a central [ConfigService].

The first version is aimed at providing this functionality on Windows. Later version might add support for Linux.
See [Discussion on Windows service management] for a description of technology choices.

h4. Prerequisites

# Account priveleges required: start/stop/install services
## Windows user: Open SCM Manager
## Unix user: sudo?
## Firewall Requirements: Outbound SSL port 443

h4. Getting started

# Install Java
## install_java.bat ?
# Download _install_jau_ script
# Run _install_jau_ script with url to ConfigService as parameter

h4. About Java Auto-Update

# Query ConfigService for service configuration.
## Input parameters: artifactId, clientId (optional)
# if ServiceConfig lastChanged string is not identical to previous
## download all download items
## stop service if running
## start service

* [Extract environment info and events from managed service's logs]

h4. Java Auto-Update implementation notes

* Java process
* Should always be running (start at boot, integrate with process manager on OS)
* Simple, stable, robust
* JAU is not responsible for selecting nether appplication version or which config. This is the responsibility of [ConfigService].
* Poll ConfigService for ServiceConfiguration using http(s).
* Work on Linux and Windows
* Perhaps use _ScheduledExecutorService_ to provide cron/schedule functionality.
** Check for changes to application binaries or configuration every 5 minutes.

* *TODO* verify that process management support in JDK 8 is powerful and robust enough.



{column}
{column}
h3. Useful links
* [Java Auto-Update]
* [ConfigService Dashboard]
* [ConfigService APIs]
* [ConfigService -Administration - User Guides]

{gliffy:name=jau|version=6}

h4. Are there existing relevant libraries or projects?

* [http://docs.oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.html]
* [https://github.com/twall/jna]
* [http://sourceforge.net/projects/yajsw/]
* [https://github.com/constretto/constretto-server] (empty)
{column}
{section}