L'ensemble des données est stocké dans une base de données, images comprises, cela nous a ammené à utiliser PostgreSQL (et non MySQL) pour ses possibilités de streaming sur les blobs.
Exemple sous debian :
apt install postgresql
dans /etc/postgresql/<XX>/main/pghba.conf ajout de :
host all all 127.0.0.1/32 password
Redémarrage de postgresql
systemctl restart postgresql.service
Création de la base :
su postgres psql create database esupsignature; create USER esupsignature with password 'esup'; grant ALL ON DATABASE esupsignature to esupsignature;
L'application a été développée avec la fonction de lecture/écriture des blobs dans une transaction par streaming de PostgreSQL.
Pour une bonne gestion des blob de cette application, il faut ajouter dans PostgreSQL un trigger sur la base de données sur la table big_file. La fonction lo_manage est nécessaire ici.
Sous debian :
apt-get install postgresql-contrib
Puis la création de l'extension lo se fait via un super-user:
apt-get install postgresql-contrib psql \c esupsignature CREATE EXTENSION lo;
Et enfin ajout du trigger (afin que les tables soient préalablement créées, notamment la table big_file sur lequel on souhaite mettre le trigger lo_manage, il faudra avant celà démarrer une fois esup-signature (avec le paramètre 'create' dans le database.properties)) :
CREATE TRIGGER t_big_file BEFORE UPDATE OR DELETE ON big_file FOR EACH ROW EXECUTE PROCEDURE lo_manage(binary_file);
CF https://www.postgresql.org/docs/9.4/static/lo.html
Vous devez démarrer l'application une fois.Ne pas oublier ensuite, pour ne pas écraser la base au redémarrage, de modifier src/main/resources/META-INF/spring/database.properties : create-> update