Configuration SAINet

Les configurations spécifiques du serveur SAINet se trouvent dans le fichier <runtime>/server.properties. Certaines d’entre elles peuvent également être directement définies en tant que variable d’environnement (généralement pour une installation Docker). Certaines peuvent ensuite être écrasées par une variable SYS22 dans SAINet (voir les variables applicatives en fin de page).

Configuration globale

Ces propriétés sont globales au serveur.

Propriété Environnement Type Description
server.customerFile SAINET_CUSTOMER_FILE string Configuration des modules du serveur. Doit contenir le nom d’un fichier (avec extension) existant dans modules/customers.
server.mobile.enabled SAINET_MOBILE_ENABLED boolean Détermine si l’interface web doit être déployée (nécessite une compilation pour le développement). Cela n’a pas d’impact sur l’API JSON.
server.port.http SAINET_PORT_HTTP int Port HTTP (utiliser une valeur négative pour un lookup dynamique).
server.port.https SAINET_PORT_HTTPS int Port HTTPS (utiliser une valeur négative pour un lookup dynamique).
server.port.admin int Port d’administration (utiliser une valeur négative pour un lookup dynamique).
server.port.jmx int Interne, ne pas utiliser.
server.port.jms int Interne, ne pas utiliser.
server.port.iiop_orb int Interne, ne pas utiliser.
server.port.iiop_ssl int Interne, ne pas utiliser.
server.port.iiop_sslma int Interne, ne pas utiliser.

Lorsque la valeur d’un port est négative, cela indique au serveur SAINet de faire une recherche dynamique d’un port ouvert. Par exemple, si la valeur est -9301, le serveur va essayer d’utiliser le port 9301. Si celui-ci n’est pas disponible, il va essayer le 9302 et ainsi de suite jusqu’à 9601 (limite à 300). La valeur d’un port ne peut pas être mise à zéro.

Note:

L’utilisation d’un port en-dessous de 1024 requiert généralement les accès root/administrateur. Il est donc déconseillé de les utiliser.

Par défaut, le système va utiliser les port 9090 (HTTP) et 9191 (HTTPS) afin de ne pas entrer en conflit avec d’éventuelles autres applications qui sont généralement configurées par défaut sur les ports 8080 et 8181.

Identification du serveur

Ces propriétés sont globales au serveur et servent principalement à l’identifier.

Propriété Environnement Type Description
server.sainet.instance.name SAINET_INSTANCE_NAME string Nom de l’instance (affiché dans le header SAINet). Par défaut, PYA.
server.sainet.domain.name SAINET_DOMAIN_NAME string Nom du domaine. Cette valeur peut être utilisée pour facilier l’identification de serveur. Il est toutefois recommandé de la laisser vide.
server.sainet.domain.env SAINET_ENV_NAME string Environnement du serveur. Cette valeur doit correspondre à l’identifiant d’un des tags <environment> du fichier customer.
SAINET_EXTERNAL_URL string URL complète d’accès externe à SAINet (par exemple https://sainet.mydomain.com/SNV4SRV-ws-war/EPS). Cette variable n’est pas nécessaire si l’environnement pointe déjà sur la bonne URL.

Sur un serveur de production, généralement seule la variable server.sainet.domain.env nécessite d’être définie afin que le serveur puisse connaître l’URL par laquelle il est accédé (nécessaire pour le mobile).

Si plusieurs instances sont disponibles, il est nécessaire de définir la variable server.sainet.instance.name afin que cette dernière puisse être identifiée en cas de problème.

Accès au serveur

Ces propriétés sont utilisées par les descripteurs internes à SAINet et ont un impact sur les différentes URLs et resources JNDI.

Propriété Type Description
sainet.context_root string Racine de l’application (par défaut SNV4SRV-ws-war).
sainet.context_root_mobile string Racine de l’application mobile (par défaut SNV4SRV-mobile-war).
sainet.jdbc_resource_ref_name string Nom JNDI pour la resource JDBC (par défaut jdbc/sainet) afin de se connecter à la base de données.
sainet.mail_resource_ref_name string Nom JNDI pour la resource MAIL (par défaut mail/sainet) afin que l’application puisse envoyer des mails.

A moins d’avoir des besoins spécifiques (généralement un environnement avec d’autres applications), il est recommandé de ne pas toucher à ces variables.

Accès à la base de données

Ces propriétés définissent où sont stockées les données de SAINet.

Propriété Environnement Type Description
datbase.type h2,mysql,oracle Type de base de données.
datbase.h2.path SAINET_DATABASE_H2_URL string Si h2, chemin d’accès au fichier des données (relatif au dossier <runtime>).
datbase.mysql.host SAINET_DATABASE_MYSQL_HOST string Si mysql, nom de l’hôte (par défaut localhost).
datbase.mysql.port SAINET_DATABASE_MYSQL_PORT int Si mysql, numéro du port (par défaut 3306).
datbase.mysql.schema SAINET_DATABASE_MYSQL_SCHEMA string Si mysql, nom du schema.
datbase.mysql.user SAINET_DATABASE_MYSQL_USER string Si mysql, nom d’utilisateur.
datbase.mysql.password SAINET_DATABASE_MYSQL_PASSWORD string Si mysql, mot de passe utilisateur.
datbase.oracle.host SAINET_DATABASE_ORACLE_HOST string Si oracle, nom de l’hôte (par défaut localhost).
datbase.oracle.port SAINET_DATABASE_ORACLE_PORT int Si oracle, numéro du port (par défaut 1521).
datbase.oracle.schema SAINET_DATABASE_ORACLE_SCHEMA string Si oracle, nom du schema (par défaut XE).
datbase.oracle.user SAINET_DATABASE_ORACLE_USER string Si oracle, nom d’utilisateur.
datbase.oracle.password SAINET_DATABASE_ORACLE_PASSWORD string Si oracle, mot de passe utilisateur.
datbase.parameter.<name> SAINET_DATABASE_<type>_PARAMS, SAINET_DATABASE_<type>_PARAMS_FILE string Paramètre <name> supplémentaire pour la base de données.

Généralement la base de données h2 est utilisée pour les tests. Pour une base de données en production, il est recommandé d’utiliser MariaDB (configurable avec mysql).

Il est possible d’utiliser les variables d’environnement SAINET_DATABASE_H2_PARAMS, SAINET_DATABASE_MYSQL_PARAMS et SAINET_DATABASE_ORACLE_PARAMS afin de spécifier des paramètres supplémentres. La valeur de ces variables doit être donnée sous la forme key1=value1;key2=value2;.... Il est également possible d’utiliser les variables SAINET_DATABASE_H2_PARAMS_FILE, SAINET_DATABASE_MYSQL_PARAMS_FILE et SAINET_DATABASE_ORACLE_PARAMS_FILE pour spécifier un fichier .properties avec les propriétés supplémentaires.

Note:

Si une des variables *_PARAMS est spécifiée, la variable correspondante *_PARAMS_FILE sera ignorée.

Configuration EDMS

Ces propriétés définissent les différents emplacements qui touchent au système de fichier. Par défaut, aucune de ces propriétés n’est obligatoire et les sous-dossiers nécessaires sont créés automatiquement dans <runtime>/edms.

Propriété Environnement Type Description
sainet.fs.root.ged SAINET_EDMS_GED string Chemin absolu de l’emplacement de la GED. Par défaut dans <runtime>/edms/ged.
sainet.fs.root.log SAINET_EDMS_LOG string Chemin absolu de l’emplacement des fichiers de logs. Par défaut dans <runtime>/edms/log.
sainet.fs.root.tmp SAINET_EDMS_TMP string Chemin absolu de l’emplacement des fichiers temporaires. Par défaut dans <runtime>/edms/tmp.
sainet.fs.root.bck SAINET_EDMS_BCK string Chemin absolu de l’emplacement des fichiers de backups internes de la GED. Par défaut dans <runtime>/edms/bck.
sainet.fs.root.conf SAINET_EDMS_CNF string Chemin absolu de l’emplacement des fichiers de configuration. Par défaut dans <runtime>/edms/conf.

En cas d’architecture multi-instances, l’emplacement de la GED doit être commun à toutes les instances. Il est donc nécessaire de définir sainet.fs.root.ged ou SAINET_EDMS_GED.

De manière générale, les autres propriétés n’ont pas besoin d’êtres définies. Dans le cas où elles seraient définies, il est recommandé que les emplacements se situent sur le disque local de la machine afin de ne pas pénaliser les performances.

Configuration SMTP (serveur mail)

Ces propriétés permettent de configurer un serveur SMTP afin que SAINet puisse envoyer des emails.

Info:

La configuration du serveur SMTP peut être faite entièrement via SYS22.

Propriété Environnement Type Description
mail.type none,local,simple Type de resource.
mail.local.port SAINET_MAIL_LOCAL_PORT int Si local, détermine le port local à utiliser.
mail.simple.protocol SAINET_MAIL_STMP_PROTOCOL smtp,smtps Si simple, protocole à utiliser (par défaut, smtp).
mail.simple.host SAINET_MAIL_STMP_HOST string Si simple, nom de l’hôte.
mail.simple.port SAINET_MAIL_STMP_PORT int Si simple, numéro du port (optionnel).
mail.simple.from SAINET_MAIL_STMP_FROM string Si simple, adresse email à utiliser dans le From.
mail.simple.user SAINET_MAIL_STMP_USER string Si simple, nom d’utilisateur (si authentification nécessaire).
mail.simple.password SAINET_MAIL_STMP_PASSWORD string Si simple, mot de passe utilisateur. Implique la création (automatique) de la variable mail.smtp.auth=true.
mail.simple.timeout SAINET_MAIL_SMTP_CONNECTION_TIMEOUT / SAINET_MAIL_SMTP_READ_TIMEOUT int Si simple, détermine le timout (en millisecondes) pour la connexion et la lecture au serveur SMTP. Une valeur à zéro ou négative signifie un timeout infini.
mail.* SAINET_MAIL_STMP_PARAMS, SAINET_MAIL_STMP_PARAMS_FILE Autre propriétés relatives à la configuration des mails (voir ici).

Le type de mail local est généralement utiliser pour les tests. Cela démarrer un serveur SMTP local sur le port spécifié et stocke les mails envoyés par SAINet afin qu’ils puissent être vérifiés par la suite (uniquement par API).

De la même manière que pour les paramètres de la base de données, il est possible d’utiliser la variable SAINET_MAIL_STMP_PARAMS sous éa forme key1=value1;key2=value2;... afin de spécifier des paramètres supplémentaires. Il est également possible d’utiliser la variable SAINET_MAIL_STMP_PARAMS_FILE afin de pointer vers un fichier contenant les propriétés supplémentaires.

Note:

La configuration par propriétés/variables d’environnement est statique. En cas de changement, un redémarrage du serveur sera nécessaire. La configuration SYS22 est dynamique et ne nécessite pas de redémarrage.

Authentification

Ces propriétés permettent de configurer comment un utilisateur est authentifié dans SAINet. Par défaut, SAINet utiliser un JDBCRealm qui utilise la base de données afin d’authentifier un utilisateur.

Propriété Environnement Type Description
realm.classname SAINET_REALM_CLASSNAME string Nom complet de la classe du Realm.
realm.prop.<name> SAINET_REALM_PARAMS, SAINET_REALM_PARAMS_FILE string Propriété relative au Realm. La partie <name> sera utilisée pour créer la propriété dans la configuration.
Note:

La propriété realm.prop.jaas-context doit généralement être spécifiée en relation avec le Realm autorisé. Elle peut prendre une des valeurs suivantes: fileRealm, ldapRealm, solarisRealm, jdbcRealm, jdbcDigestRealm ou pamRealm.

Les modules d’authentification fournis peuvent être trouvés ici.

De la même manière que pour les paramètres de la base de données, il est possible d’utiliser la variable SAINET_REALM_PARAMS sous éa forme key1=value1;key2=value2;... afin de spécifier des paramètres supplémentaires. Il est également possible d’utiliser la variable SAINET_REALM_PARAMS_FILE afin de pointer vers un fichier contenant les propriétés supplémentaires.

Exemple d’authentification avec ActiveDirectory / LDAP

realm.classname=com.sun.enterprise.security.auth.realm.ldap.LDAPRealm
realm.prop.directory=<url>
realm.prop.search-filter=(&(objectClass=user)(sAMAccountName=%s)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))
realm.prop.search-bind-dn=DOMAIN\\ADSynch
realm.prop.base-dn=DC=domain,DC=lan
realm.prop.group-search-filter=(&(objectClass=group)(member=%d))
realm.prop.search-bind-password=<password>
realm.prop.group-base-dn=OU=UO-DataCenter,DC=domain,DC=lan
realm.prop.jaas-context=ldapRealm

Mises à jour automatiques

Ces propriétés permettent de configurer les mises à jour automatiques de l’application. Les données d’authentification sont stockées dans le fichier infra/auth/htpasswd.

Note:

Dans le cas d’un service, la configuration des mises à jour se fait dans le fichier <runtime>/services/<service>/sainet-vars.<ext> (les parties <service> et <ext> dépendent du système d’exploitation).

Propriété Environnement Type Description
sainet.update.url SAINET_UPDATE_URL string URL pour le téléchargement des paquets de mise à jour (par défaut https://dev2.sai-erp.net/update).
sainet.update.username SAINET_UPDATE_USERNAME string Nom d’utilisateur.
sainet.update.password SAINET_UPDATE_PASSWORD string Mot de passe.
sainet.update.store SAINET_UPDATE_STORE string Chemin d’accès complet où le paquet de mise à jour doit être téléchargé.
sainet.update.mode SAINET_UPDATE_MODE snapshot,rc,release Mode de mise à jour désiré (voir les types de version.
sainet.update.restart SAINET_UPDATE_RESTART boolean Détermine si le serveur doit être redémarré (par défaut false).

Pour que les mises à jour soient automatiquement appliquées, il faut mettre sainet.update.restart=true car sinon, le paquet de mise à jour est seulement téléchargé.

Serveur Redis (mobile)

Cette configuration s’applique uniquement pour la partie mobile, dans le cas où le cache redis est délocalisé.

Propriété Environnement Type Description
sainet.mobile.redis.url SAINET_REDIS_URL string URL du serveur Redis (par défaut redis://127.0.0.1:6379).

Autres WAR

Il est possible de déployer d’autres applications au sein du serveur SAINet.

Propriété Type Description
server.extra-wars string Liste de fichiers WAR à déployer (séparés par des virgules).

Variables applicatives

Beaucoup d’autres variables sont utilisées au sein de SAINet, dont certaines peuvent êtres déclarées comme variables d’environnement. Une vue complète de toutes ces variables peut être obtenue dans la tâche SYSSV.

Toutes les variables applicatives utilisées dans SAINet sont déclarées au niveau du paramétrage:

Fichier Description
sainet.properties Contient les variables applicatives spéciales qui doivent être accessibles en dehors d’une configuration (par exemple, durant l’initialisation du serveur).
system.properties Contient toutes les variables applicatives utilisables de manière standard dans SAINet. Ce fichier peut être personnalisé par module afin de déclarer/modifier des variables en fonction de la modularisation.
Note:

Toutes les propriétés préfixée par sainet. sont également définies comme propriété système et peuvent donc être accédées dans le programme par System.getProperty(<id>).