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 :
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
      ....
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
 <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>
mais si l'application est arrêtée puis relancé, 2 cas possibles :
- 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 ?