View Source

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.

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


h4. Are there existing relevant libraries or projects?

* []
* []
* []
* [] (empty)