Bonjour à tous,
Voilà j'utilise une servlet qui crée un thread, je lance celle-ci sur un serveur... sauf que le même ear est lancé sur un serveur redondant or la servlet ne doit démarrer sur ce dernier que dans le cas ou le serveur principal tombe (logique), sachant que la servlet attaque la même BDD depuis les deux serveurs elles traitent les données en double et ceci est assez embêtant.
ceci est ma classe servlet :
et voici la méthode runWorker() qui crée le thread
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 public class LancerScrute extends HttpServlet { private Thread threadTempo; public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("Get : La servlet marche"); } public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("Post : La servlet marche"); } public void init() throws ServletException { super.init(); try{ Scrute leScrute=Scrute.getInstance(getInitParameter(Scrute.KEY_PERSISTANCE)); leScrute.runWorker(); }catch(Exception e){ throw new ServletException(e); } } public void destroy() { try{ System.out.println("Demande d'arret du thread de tempo par la servlet"); Scrute leScrute=Scrute.getInstance(getInitParameter("persistanceFluxXML")); leScrute.arret(); }catch(Exception e){ e.printStackTrace(); } } public Thread getThreadTempo() { return threadTempo; } public void setThreadTempo(Thread threadTempo) { this.threadTempo = threadTempo; } }
Est-ce-qu'il y a moyen d'êmpecher cette servlet de démarrer sur le serveur redondant? sachant que le seul rapport entre les deux servlets qui se lancent sur les deux serveurs est la BDD, j'ai pensé à mettre un marqueur (genre nomServeur et timeStamp) dans la BDD afin de tracer laquelle des deux servlets tourne!! mais je m'en sortirai jamais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 public void runWorker() { mShutdown=false; mWorker = new Thread( this ); mWorker.start(); }
Pensez-vous qu'il y a plus simple?
Je vous remercie d'avance de votre aide
![]()
Partager