Si vous essayez d'empêcher une requête de durer trop longtemps, la définition d'un délai d'attente dans Tomcat ne vous aidera pas. Comme le dit Chris, vous pouvez définir la valeur globale du délai d'attente pour Tomcat. Mais, à partir de Le connecteur Apache Tomcat - Mode d'emploi générique Délais d'attente voir la section Délai de réponse :
JK peut également utiliser un délai d'attente pour les réponses aux demandes. Ce délai d'attente ne pas le temps de traitement complet de la réponse. Il contrôle plutôt combien de temps entre des paquets de réponses consécutifs est autorisé.
Dans la plupart des cas, c'est ce que l'on souhaite réellement. Considérez par exemple les téléchargements de longue durée. Il ne serait pas possible de définir un de réponse global efficace, car les téléchargements peuvent durer plusieurs minutes. La plupart des applications ont cependant un temps de traitement limité avant de commencer pour renvoyer la réponse. Pour ces applications, vous pouvez définir un délai de réponse explicite. Les applications qui ne s'harmonisent pas avec les délais de réponse sont les applications de type "batch", les entrepôts de données et les applications de qui sont censées observer des temps de traitement longs.
Si JK abandonne l'attente d'une réponse, parce qu'un délai de réponse a été déclenché, il n'y a aucun moyen d'arrêter le traitement sur le backend. Bien que vous libériez ressources de traitement dans votre serveur web, la requête continuera à être continuer à s'exécuter sur le backend - sans aucun moyen de renvoyer un résultat une fois que le le délai de réponse s'est déclenché.
Ainsi, Tomcat détectera que la servlet n'a pas répondu dans le délai imparti et renverra une réponse à l'utilisateur, mais n'arrêtera pas le fil en cours . Je ne pense pas que tu puisses réaliser ce que tu veux faire.
0 votes
Utilisez-vous
Socket
yServerSocket
? car si c'est le cas, vous pouvez définir le délai d'attente à l'aide de la fonctionSetSoTimeout
méthode.0 votes
@Eran, il développe une application web. Il ne peut pas accéder au socket du serveur ouvert par Tomcat.
2 votes
Je conteste vraiment le fait que vous ayez déployé du code qui parfois conduit à des boucles infinies :-)
1 votes
Je commencerais par réparer la ou les boucles infinies. Le fait que la session se termine pendant que votre code tourne en boucle ne changera rien au fait qu'il tourne en boucle.
0 votes
Le code sera ajouté par d'autres personnes, et je ne veux pas que leurs modules tournent en boucle infinie et ralentissent le serveur.
0 votes
Cela peut également vous donner une idée : stackoverflow.com/q/1414795/318285
0 votes
Cela ressemble à une solution technique à un problème de gestion.