Description
File-backed keystores can generically be made reloadable. This can be done by creating a KeyStore wrapper which contains an AtomicReference<KeyStore>. The wrapper also has a file name reference, and will initialize itself from that file. It would use an NIO.2 file watcher to monitor the file for changes; when the file is changed, the watcher attempts to re-load the file into a new KeyStore instance (using cached protection parameters). If successful, the new KeyStore replaces the old one atomically, providing atomic and clean real-time update capability.