2. Chantier « Boîtes à outils

publicité
Projet boîte à outils
Batch générique
Framework GenericBatch
Spécification DSTI
Historique des modifications
Version
Date
Auteur
1.1
27/01/2014
G. Weber
1.2
03/02/2014
G. Lannoo
1.3
04/02/2014
G. Weber
Documentations de référence
Nom
Documentation Log4J v1.2.17
Documentation DBUtils v1.5
Modification
Compléments
Compléments
Version
http://logging.apache.org/log4j/1.2/apidocs/index.html
http://commons.apache.org/proper/commonsdbutils/apidocs/index.html
1
TABLE DES MATIERES
1.
OBJET ............................................................................................................................................. 3
1.
2.
3.
2.
RAPPEL DU BESOIN ........................................................................................................................ 3
CHANTIER « BOITES A OUTILS »...................................................................................................... 3
FRAMEWORK GENERICBATCH ........................................................................................................ 3
CONCEPTION ................................................................................................................................. 4
1.
2.
3.
4.
5.
3.
CLASSES PRINCIPALES ET ELEMENTS REMARQUABLES ..................................................................... 4
LECTURE DU FICHIER DE PROPRIETES ............................................................................................. 4
UTILISATION DE LOG4J V1.2.17 ...................................................................................................... 4
UTILISATION DE DBUTILS V1.5 ET OJDBC14.JAR .............................................................................. 4
TRAITEMENT DES EXCEPTIONS ET RENVOI DES CODES DE SORTIE ..................................................... 5
UTILISATION .................................................................................................................................. 6
1.
2.
RAPPEL SUR LES LIBRAIRIES A INCLURE ........................................................................................... 6
EXEMPLE D’IMPLEMENTATION ......................................................................................................... 6
2
1. Objet
1. Rappel du besoin
Plusieurs projets logiciels au sein de la Direction Informatique de la Ville de Paris nécessitent
des outils répondant à des besoins similaires.
2. Chantier « Boîtes à outils »
Le chantier « Boîte à outils » a pour finalité de proposer et maintenir plusieurs composants
développés en Java pour répondre à ces besoins de façon standardisée. Certains
composants sont fournis pour répondre à quelques besoins (requêtes SQL).
3. Framework GenericBatch
Le premier besoin identifié correspond à un jeu de composants permettant de concevoir et
mettre en exploitation un traitement de données autonome (traitement par lot ou batch).
Le framework GenericBatch est un package Java (fichier archive .jar) contenant l’ensemble
des classes spécifiquement développées pour son fonctionnement, proposant les
fonctionnalités suivantes :
- Lecture d’un fichier de propriétés, pour standardiser la configuration
- Création et alimentation d’un fichier de trace d’exécution (basé sur la librairie
OpenSource Log4J v1)
- Création et exploitation d’une connexion à une base de données (basé sur la librairie
OpenSource DbUtils)
- Gestion d’exceptions spécifiques pour traiter les cas d’erreur de façon unifiée
- Renvoi de codes de fin d’exécution standardisés aux normes d’exploitation de la Ville
de Paris
Le framework propose une classe centrale (org.paris.gbatch.GenericBatch) qu’il appartient
au développeur d’étendre, le principe recherché étant de décharger le développeur des
tâches spécifiques et répétitives liées à la gestion des logs et des appels à la base de
données, pour concentrer ses travaux sur le développement des fonctionnalités métier
spécifiques au batch à produire.
3
2. Conception
1. Classes principales et éléments remarquables
Generic
Batch
Logger
Connexion
Database
Driver
Not
Found
Exception
Database
Connection
Failed
Exception
Log4j v1
DbUtils
No
Properties
Found
Exception
ojdbc14.jar
(abstract)
Generic
Batch
Exception
2. Lecture des fichiers de propriétés
Le constructeur GenericBatch utilise une méthode qui charge les fichiers de propriétés
« query.properties » et « config.properties ».
Le fichier devra se trouver dans le répertoire config qui sera dans le répertoire courant de
l’exécutable pour qu’il soit détecté.
Si le fichier est vide, une exception de type NoPropertiesFoundException est levée. Si la
classe n’arrive pas à charger son fichier de propriétés, une exception de type IOException
est levée.
3. Utilisation de Log4J v1.2.17
Le constructeur GenericBatch instancie un constructeur de type LogBatch. Cette classe
implémente la librairie Log4J. Le constructeur de type LogBatch instancie un logger.
La méthode charge le fichier de propriétés « config.properties » contenant le chemin et le
nom du log : configurationLog().
La méthode permettant d’écrire dans un log est : info(String).
Si le fichier de log ne peut pas être enregistré à l’endroit défini, une exception de type
IOException est levée.
4. Utilisation de DbUtils v1.5 et ojdbc14.jar
Le constructeur GenericBatch instancie un objet de la classe Connection à l’état null.
4
La classe GenericBatch possède une méthode qui va créer une connexion à la base de
données : getInstance() utilisant le patron de conception « Singleton ». Une méthode permet
de clôturer la connexion à la base de données : closeInstance().
Il y a des méthodes prévues pour chaque type de requête SQL : requête SELECT
(executeSelect(nomRequête)), requête UPDATE (executeUpdate(nomRequête)), requête
INSERT (executeInsert(nomRequête)) et requête DELETE (executeDelete(nomRequête))
Si le driver ojdbc14.jar est absent, une exception de type DatabaseDriverNotFoundException
sera levée. Si la connexion à la base de donnée a echoué, une exception de type
DatabaseConnectionFailedException.
5. Traitement des exceptions et renvoi des codes de sortie
Si une mauvaise requête SQL est exécutée par une méthode de GenericBatch
(executeSelect, executeUpdate, executeInsert ou executeDelete) une exception
SQLException est levée.
Les codes retour sont :
 [0] = Normal
 [5] = Anomalie non bloquante
 [10] = Anomalie bloquante
La classe CodeRetourBatch fournit ces codes de retour dans des variables statiques :
 [0] = EXIT_OK
 [5] = EXIT_WARNING
 [10] = EXIT_ERROR
//On écrit dans le log configuré un code de retour erreur : 10
Batch.logger.getLogBatch().info("Code de retour :"+ CodeRetourBatch.EXIT_ERROR);
5
3. Utilisation
1. Rappel sur les librairies à inclure
Le framework GenericBatch s’appuie sur plusieurs librairies qui doivent apparaître dans le
paramètre classpath fourni à la JVM lors de l’exécution du batch exploitant le framework :
- Librairie Log4J v 1.2.17 : (log4j-1.2.17.jar – 381 ko)
- Librairie DbUtils vXX : (commons-dbutils-1.5.jar – 61 ko)
- Driver Jdbc : (objdbc6.jar – 2676 ko)
- Etc…
2. Exemple d’implémentation
public class MonBatch extends GenericBatch {
public static void main(String[] args) throws Exception {
//Constructeur de la classe GenericBatch afin d'instancier le log
GenericBatch Batch = new GenericBatch();
//Configuration d'une connexion à une base de données Oracle
Batch.dbConnect();
//Exécution d'une requête de type SELECT située dans le fichier de
propriétés
//Le nom de la requête est : nbLignes
Batch.executeSelect("nbLignes");
//Fermeture de la connexion à la base de données Oracle
Batch.dbDisconnect();
}
}
Contenu du fichier query.properties :
#Fichier de propriétés contenant les requêtes SQL
nbLignes=select count(1) from edition_testbatch
deleteLignes=delete from edition_testbatch
Contenu du fichier config.properties :
#Fichier de propriétés contenant les propriétés du log
cheminLog=C:\\Users\\webergu\\Desktop
nomLog=EpurationBatch
urlOracle=10.161.129.19
portOracle=1521
SIDOracle=xxx
user=xxx
pass=xxx
6
Contenu du fichier MonBatch.txt (C:\Users\webergu\Desktop\MonBatch.txt) :
2014-02-13 11:45:47,963
2014-02-13 11:45:47,973
query.properties.
2014-02-13 11:45:49,616
données établie.
2014-02-13 11:45:50,608
2014-02-13 11:45:50,618
INFO
INFO
root - LogBatch.java:95 - Configuration du log.
root - GenericBatch.java:77 - Chargement du fichier
INFO
root - GenericBatch.java:95 - Connexion à la base de
INFO
INFO
root - GenericBatch.java:166 - Requête exécutée.
root - GenericBatch.java:109 - Code de retour : 0
Un fichier de log est produit par traitement : GenericBatchLog.txt
Le fichier se trouve dans un répertoire « log » situé dans le répertoire de l’exécutable par
défaut.
Exemple :
C:\Users\webergu\Desktop\GenericBatch.jar
C:\Users\webergu\Desktop\log\GenericBatchLog.txt
7
8
Téléchargement