Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
646 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Servlet : Attente au sein d'une webapp

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Servlet : Attente au sein d'une webapp

n°883178
El_gringo
Posté le 26-10-2004 à 16:30:30  profilanswer
 

Au sein d'une appli web. Pour l'affichage d'une image, j'ai une servlet entant que source (attribut src) d'une image au sens HTML (balise img). Cette servlet doit vérifier en base de donnée qu'un champ à été positionné sur un valeur donnée, puis envoyer des données d'image en binaire).
Ce champ indique un état en fait. Donc je voudrais que "tant que la valeur du champ est IDL (en attente), on fasse patienter pour l'affichage de l'image, et dès que la valeur est END (tâche terminée), on envoit les données d'image qu'on a à envoyer.
Actuellement, je fais dormir le thread 1 seconde puis revérifier en boucle pendant 2 minutes, avant de renvoyer une erreure.
Comme ceci :

Code :
  1. Statement stmt = null;
  2.         ResultSet r    = null;
  3.         long lStartTime   = System.currentTimeMillis();
  4.         try {
  5.             while (true) {
  6.                 stmt = _c.createStatement();
  7.                 // Génération de la requète SQL
  8.                 String strQuery = "SELECT " + JOB_COLUMNS + " FROM " + JOBS_TABLE + " WHERE "
  9.                     + JOB_COLUMN_JOBID + " = '" + _strJobID + "'";
  10.                 r = stmt.executeQuery (strQuery);
  11.                 if ((r != null) && (r.next()))
  12.                     theJob = ResultSetToJob (_c,r);
  13.                 // Si le job à été traité, rendre dans tous les cas
  14.                 if ((theJob == null) || (theJob.isJobTreated()))
  15.                     break;
  16.                 // Calcule du temps attendu jusqu'alors
  17.                 long lElapsedTime = System.currentTimeMillis() - lStartTime;
  18.                 // Si on ne doit pas attendre ou que le temps à attendre est dépassé
  19.                 if ((_iWait == 0) || (lElapsedTime >= _iWait))
  20.                     break;
  21.                 Thread.sleep(1000);
  22.             }
  23.         } finally {
  24.             if (r != null) r.close();
  25.             if (stmt != null) stmt.close();
  26.         }


 
Le problème est que ceci semble bloquer tomcat (mon moteur de servlets de dev) semble être bloqué durant cette attente : aucune autre connexion possible. Logiquement, ça ne devrait bloquer qu'un seul thread et ne devrait gêner en rien le fonctionnement de tomcat, non !?
D'autres idés ?

mood
Publicité
Posté le 26-10-2004 à 16:30:30  profilanswer
 

n°883207
benou
Posté le 26-10-2004 à 16:51:08  profilanswer
 

ouais, logiquement, seul 1 thread devrait être impacté ...
qu'est ce qui te fait dire qu eton tomcat est bloqué ? une cooecntion vers un fichier static (servit pas la DefaultServlet) bloque ?

n°883213
the real m​oins moins
Posté le 26-10-2004 à 17:00:03  profilanswer
 

je sais que ça ne repond pas à la question, mais tu afficherais pas plutot une image statique du genre "en attente, veuillez reessayer plus tard" ?
 
(avec un bouton refresh a un endroit bien visible pour les neuneus?)


Message édité par the real moins moins le 26-10-2004 à 17:00:24

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°883273
El_gringo
Posté le 26-10-2004 à 17:53:06  profilanswer
 

the real moins moins a écrit :

je sais que ça ne repond pas à la question, mais tu afficherais pas plutot une image statique du genre "en attente, veuillez reessayer plus tard" ?
 
(avec un bouton refresh a un endroit bien visible pour les neuneus?)


 
Non non, parce qu'en principe, l'image apparait au bout d'une à 2 secondes. Et puis je peux pas me permettre de faire cliquer l'utilisateur une fois de plus. On criorait pas, mais c'est souvent tatillon un client !

n°883276
the real m​oins moins
Posté le 26-10-2004 à 17:54:12  profilanswer
 

con serait plus approprié [:itm]
 
en fait, ton image n'est jamais generée *avant* que le bordel soit appelé par la servlet?


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°883281
El_gringo
Posté le 26-10-2004 à 17:56:17  profilanswer
 

benou a écrit :

ouais, logiquement, seul 1 thread devrait être impacté ...
qu'est ce qui te fait dire qu eton tomcat est bloqué ? une cooecntion vers un fichier static (servit pas la DefaultServlet) bloque ?


 
Je suis pas encore sur à 100%, 'faut que je fasse des tests.
Pas de connexion vers un fichier static.

n°883283
the real m​oins moins
Posté le 26-10-2004 à 17:57:39  profilanswer
 

euh t'es sur que                 Thread.sleep(1000); c'est correct? faut pas faire un truc du genre Thread.getCurrentThread().sleep(x) ?  
 
 
(--, n00b total en threads)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°883285
El_gringo
Posté le 26-10-2004 à 18:00:04  profilanswer
 

c'est pareil j'pense. QUand je fais Thread.sleep(1000) ça s'applique au thread courant.

n°883290
the real m​oins moins
Posté le 26-10-2004 à 18:05:53  profilanswer
 

hmmm, ouais d'après la javadoc, en effet..


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°883299
benou
Posté le 26-10-2004 à 18:14:23  profilanswer
 

the real moins moins a écrit :

hmmm, ouais d'après la javadoc, en effet..


c'est une méthode static [:spamafote]

mood
Publicité
Posté le 26-10-2004 à 18:14:23  profilanswer
 

n°883315
the real m​oins moins
Posté le 26-10-2004 à 18:37:02  profilanswer
 

euh, ... ?


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°883450
benou
Posté le 26-10-2004 à 21:08:51  profilanswer
 
n°883458
the real m​oins moins
Posté le 26-10-2004 à 21:25:53  profilanswer
 

ben euh je vois pas bien le lien en fait. (ça doit etre évident, mais je sais pas, moi et les threads...)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°883485
benou
Posté le 26-10-2004 à 21:59:13  profilanswer
 

the real moins moins a écrit :

ben euh je vois pas bien le lien en fait. (ça doit etre évident, mais je sais pas, moi et les threads...)


juste que ca a aucun sens d'appeler une méthode static sur une instance (de Thread ou d'autre chose) [:spamafote]


---------------
ma vie, mon oeuvre - HomePlayer
n°883488
the real m​oins moins
Posté le 26-10-2004 à 22:02:30  profilanswer
 

euh ha ouais ok, j'avais pas tilté [:itm]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°883780
El_gringo
Posté le 27-10-2004 à 11:41:09  profilanswer
 

Non, en fait je dis n'importe quoi, excusez moi. Surm on poste c'est nickel. Ce doit être autre chose.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Servlet : Attente au sein d'une webapp

 

Sujets relatifs
communication servlet appletJAVA, J2EE Servlet EJB JSP
Files d'attente et schedulerattente de threads pour rendre la main + swing
c'est quoi un SERVLET ?[Assez urgent] Lien au sein d'un tableau, c'est possible ?
fenetre d'attente sous VBAInterface d'attente pour un téléchargement facon Fileplanet
probleme client attente d'une connexion server[Java - Servlet] Methode Init() non executee
Plus de sujets relatifs à : Servlet : Attente au sein d'une webapp


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR