Traitement d’un fichier de configuration mixte en java Partie 3
par
, 06/04/2020 à 19h43 (577 Affichages)
Ce billet va montrer comment exploiter un ficher de configuration httpd.conf.properties obtenu dans le post précédant.
Voici le fichier :
On remarque immédiatement un problème de clé qui sont mentionées pmusieurs fois avec es valeur différentes. Ce sont les clés Include et LoadModule. En effet on peut charger plusieurs modules et inclure plusieurs fichiers. Nous devons mettre toutes les valeurs dans une seule clé afin d’obtenir le fichier suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 ThreadsPerChild=250 MaxRequestsPerChild= 0 Listen=80 ServerRoot="/www/Apache22" DocumentRoot="/THDL/thdl-site" ServerName=localhost:80 ServerAdmin=admin@localhost ErrorLog=logs/error.log LogLevel=error LoadModule=alias_module modules/mod_alias.so LoadModule=authz_host_module modules/mod_authz_host.so LoadModule=autoindex_module modules/mod_autoindex.so LoadModule=dir_module modules/mod_dir.so LoadModule=log_config_module modules/mod_log_config.so LoadModule=mime_module modules/mod_mime.so LoadModule=rewrite_module modules/mod_rewrite.so LoadModule=setenvif_module modules/mod_setenvif.so DefaultType=text/plain IndexIgnore=.htaccess Redirect=/thdl http://localhost Include=conf/extra/httpd-autoindex.conf Include=conf/extra/httpd-languages.conf Include=conf/extra/httpd-info.conf Include=conf/extra/httpd-manual.conf Include=conf/extra/httpd-default.conf Include=conf/Suite-extra/components.conf LoadFile="C:/www/php5/php5ts.dll" LoadModule=php5_module "C:/www/php5/php5apache2.dll"
Pour cela nous rajoutons une méthode à notre classe utilitaire (Util) qui prend en paramètre le nom du fichier à synthétiser
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 ThreadsPerChild=250 MaxRequestsPerChild= 0 Listen=80 ServerRoot="/www/Apache22" DocumentRoot="/THDL/thdl-site" ServerName=localhost:80 ServerAdmin=admin@localhost ErrorLog=logs/error.log LogLevel=error DefaultType=text/plain IndexIgnore=.htaccess Redirect=/thdl http://localhost LoadFile="C:/www/php5/php5ts.dll" Include=conf/extra/httpd-autoindex.confconf/extra/httpd-languages.confconf/extra/httpd-info.confconf/extra/httpd-manual.confconf/extra/httpd-default.confconf/Suite-extra/components.conf LoadModule=alias_module modules/mod_alias.soauthz_host_module modules/mod_authz_host.soautoindex_module modules/mod_autoindex.sodir_module modules/mod_dir.solog_config_module modules/mod_log_config.somime_module modules/mod_mime.sorewrite_module modules/mod_rewrite.sosetenvif_module modules/mod_setenvif.sophp5_module "C:/www/php5/php5apache2.dll"
Rentrons maintenant dans le vif du sujet, nous avons besoin d’une classe qui charge depuis ce fichier de propriétés les valeurs de paramétrage :
- ThreadsPerChild
- MaxRequestsPerChild
- Listen
- ServerRoot
- DocumentRoot
- ….
- LoadModule
Rien ne sera plus simple avec la core library de java (java.util) et sa classes Properties
La classe portera le nom de Configuration et sera utilisable de cette facon :
On construit une instance de cette classe en passant à son constructeur le nom du fichier de conf et on appelle les propriétés que l’on souhaite afficher. Voici le code source de cette classe limité à une propriété pour ne pas être trop verbeux.
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Configuration conf = new Configuration("httpd.conf.properties"); System.out.println("les modules chargées sont : " + conf.getLoadModule());
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 public class Configuration { private String loadModule; public Configuration(String fileName) { Properties prop = new Properties(); try { FileInputStream inputStream = new FileInputStream(fileName); prop.load(inputStream); this.loadModule = prop.getProperty("LoadModule"); } catch (IOException e) { e.printStackTrace(); } } public String getLoadModule() { return loadModule; } }