mercredi 18 février 2009

Paramétrer CronTrigger de Quartz : un jeu d’enfant pour un connaisseur du Cron d’UNIX

Quartz utilise des "expressions cron" pour calculer le moment exact du lancement d'un JOB (par exemple le 3 de chaque mois à 21H10, lancer le batch de remboursement).

Cron expressions est très puissants, mais peut être assez déroutant, pour les débutants.

En fait, il suffit de connaitre le choix fait par Quartz, pour que tout devienne simple.

La classe CronTrigger deQuartz a été aligné sur le format des expressions CRON d'UNIX, qui est un outil puissant et éprouvé de planification soius UNIX.

C'est la classe org.quartz.CronExpression qui implémente le détail (le détail se trouve dans la documentation JavaDoc de CronExpression)


Ce tutoriel a pour but de prendre une partie de mystère de la création d'un cron expression

Avant de commencer, je présente ici quelques lignes de code java qui permettent de tester une expresion CRON avant de la lancer en production


public
void imprimeCronExpression(String expression) throws Exception{

CronExpression cronExpression= null;



cronExpression = new CronExpression(expression);

Date fire1 = cronExpression.getNextValidTimeAfter(new Date());

System.out.println(d1);

}


Si on fixe l'expression = "0 15 21 3 * ?"

Le résultat, de l'appel de la méthode imprimeCronExpression ("0 15 21 3 * ?")

Tue Mar 03 21:15:00 CET 2009 (le 03 du mois à 21:15:00)


Une expression Cron est une chaine de caractères composée de 7 champs (dont les 6 premiers on obligatoires)


champ

Valeurs autorisés

Caractère spécial autorisé

Secondes

0-59

, - * /

Minutes

0-59

, - * /

Heures

0-23

, - * /

Jour du mois

1-31

, - * ? / L W

Mois

1-12 ou JAN-DEC

, - * /

Jour de la semaine

1-7 ou SUN-SAT

, - * ? / L #

année

vide, 1970-2099

, - * /


La liste de Caractères spéciaux autorisés

*

( "toutes les valeurs») - utilisée pour sélectionner toutes les valeurs dans un champ. Par exemple, "*" dans le domaine minutes "chaque minute".

?

( "pas de valeur") - utile si vous avez besoin de préciser quelque chose dans l'un des deux domaines (Jour du mois ou Jour de la semaine) dans lesquels les caractères sont autorisés, mais pas l'autre.

Par exemple, si je veux déclencher un job le 3èmejour du mois, indépendamment du jour la semaine "0 15 21 8 * ?".


Mettre l'expression "0 15 21 8 * *", déclemnche une Exception

java.lang.UnsupportedOperationException: Support for specifying both a day-of-week AND a day-of-month parameter is not implemented.

-

utilisé pour indiquer une fourchette. Par exemple, "10-12" à l'heure domaine signifie "l'heure 10, 11 et 12".

,

utilisés pour spécifier des valeurs. Par exemple, « MON,WED,FRI" signifie, "le jour lundi,mercredi et vendredi».

/

utilisé pour spécifier les incréments. Par exemple

-- "0 / 15" dans le champ des secondes signifie «la seconde 0, 15, 30 et 45"

--"5 / 15" dans le champ des secondes signifie «la seconde 5, 20, 35 et 50".

Vous pouvez aussi spécifier "/" après le caractère''-''dans ce cas est équivalent à avoir «0» avant le «/»." 2 / 3 " dans le chanmp Jour du mois, "lancer le job tous les 3 jours à partir du deuxième jour du mois".

L

( "dernier")

- la valeur "L" dans Jour de la semaine, il signifie simplement "7" ou "SAT".

- la valeur "L" dans « Jour du mois », signifie "le dernier jour du mois", donc 31 jours de Janvier, Février pour 28 jours sur les années non bissextiles. Mais si elle est utilisée après une autre valeur, il signifie "le xxx dernier jour du mois" - par exemple "6L" signifie "le dernier vendredi du mois".

W

( «semaine») - utilisée pour spécifier le jour de la semaine (lundi-vendredi) le plus proche de la journée.

Par exemple, "15W": "le plus proche jour de la semaine du 15 du mois". Ainsi, si le 15 est un samedi, le job sera lancé, le vendredi 14, mais si le 15 est un dimanche, le le job sera lancé le lundi 16. Si le 15 est un mardi, le job sera lancé, le mardi 15.

Cas exceptionnel : "1W" , si le 1er est un samedi, le job sera lancé le lundi 3 du mois, car il doit être lancé durant le mois.

Autre cas « LW » : le dernier jour de la semaine du mois

#

Signifie le Nième XXX jour du mois.

"6#3" "le 3iemme vendredi du mois" (jour 6 = Friday).

"2#1" = le premier Lundi du mois

"4#5" = le 5iemme Mercredi du mois (si le mois ne comporte pas 5 mercredi, le job ne sera pas lancé


Le reste c'est un jeu d'enfant (javadoc de CronExpression quartz sur le sujet)

jeudi 12 février 2009

Microsoft dévoile un peu plus Azure Services Platform

Azure Services Platform, qui est considérée comme l'annonce la plus importante faite par Microsoft depuis celle de sa stratégie Internet en 1995.
Azure permettra de démocratiser le Cloud Computing : les développeurs utilisant l'IDE Visual Studio vont pouvoir déployer des solutions pour le Cloud, très simplement.

la bataille frontale avec Google sur le sujet à débutée.

à suivre ...

samedi 7 février 2009

Jahia 6 revient dans la course des EMS / CMS

A partir de la version 6.0, Jahia a migré vers GWT (Google Web Toolkit) le fameux framework AJAX de google (c'est la partie UI components dans le schéma d'architecture).

Jahia est connu en Tunisiepour être la plateforme de base, depuis 2005, de l'un des sites les plus visité en Tunisie : le site du premier opérateur de téléphonie mobile privée, le fameux Tunisiana.

Autres nouveautés de Jahia 6 : il embarque Apache Plutot 2.0, comme moteur de Portlets (JSR 168 et JSR 286) et de moteur de Mashup


Est-ce que ces choix permettront à Jahia de revenir dans la course des EMS / CMS,

Notons que ce monde des « CMS/plateforme collaboratif / Portail » vire vers les plateformes de vitalisation de poste de travail à l'instar de ExoPlateform,



jeudi 5 février 2009

Must Have : The Definitive Guide to Spring Web Services

Vous êtes sur un méga projet SOA, ou simplement sur un petit projet de création d'un webservice,

Vous avez adopté une approche contract-first, vous avez entendu parler de Spring ou bien vous êtes un expert de Spring Ioc,

Vous avez entendu parler du concept REST et vous penser le mettre en ouvre dans l'un de vos projets,

ce livre, est alors fait pour vous, c'est un « Must Have »,

Le titre du livre : The Definitive Guide to Spring Web Services

Ses auteurs Tareq Abed Rabbo (Tunisiana) & Russ Miles (SpringSource)

Dans ce livre, Tareq Abderabbo a fait la synthèse de plusieurs années de mise en ouvre, réussie, de Spring Web service et des autres Framework annexes,

un retour d'expérience très attendu, et un lien avec OSGI très apprécie

Etudier cet ouvrage sera une bonne opportunité d'avoir une vision plus globale des capacités d'un conteneur léger comme Spring et de tout ce qui l'entoure.

http://www.apress.com/book/view/9781430219934

Architecte SOA & Professionnel Open Source Headline Animator

 
Khaled BEN DRISS
Cloud Computing, SOA et Web 2.0 : Des sujets techniques sur SOA et l'Open Source : de Java & .Net, PHP5, Symfony, à SaaS / PaaS en passant par Azure, google appengine, le BPM, la Modélisation et d'autres sujets du coté du serveur et cloud computing.