bonjour,
j'utilise le framework Struts dans une appli web.
problématique : dans la fonction execute d'une action struts, je dois avoir un numéro unique journalier et incrémenté (entre 1 et 6 chiffres)
une solution partielle est d'avoir un compteur "id" dans le ServletContext : il est identique pour tous les internautes, je peux l'incrémenter dans l'execute de mon action :
je pensais déclarer ce compteur dans le web.xml à l'initialisation des paramètres de l'actionServlet
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public ActionForward execute() { // modifier le compteur du contexte ServletContext sc = getServlet().getServletContext(); if (sc.getAttribute("id") != null) transaction_id = ((Integer) sc.getAttribute("id")).intValue(); sc.setAttribute("id", new Integer(++transaction_id)); // utiliser la variable transaction_id pour le métier ....
mais si l'application est arrêtée puis relancé, 2 cas possibles :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7<servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>id</param-name> <param-value>1</param-value> </init-param>
- si l'arrêt et le redémarrage sont effectués le même jour alors le compteur doit reprendre là où il en était (id = 23 par exemple)
- si l'arrêt et le redémarrage sont faits à des jours différents alors le compteur doit reprendre à 1
comment procéder ?
Partager