Comment utiliser Java.sql.Connexion.setNetworkTimeout?
J'ai couru dans la question précise que setNetworkTimeout est censé résoudre selon Oracle. Une requête est resté coincé dans le socket.read() pendant plusieurs minutes.
Mais j'ai une petite idée de ce que le premier paramètre de cette méthode doit être. La soumission d'une valeur null provoque une AbstractMethodError exception, donc... la mise en oeuvre réellement besoin d'une sorte de pool de thread juste pour définir un délai d'attente réseau?
Est-il un moyen pour obtenir le même effet sans l'exécution d'un pool de thread juste pour cette condition?
Vous devez vous connecter pour publier un commentaire.
Il semble que la documentation explique ce horriblement, mais sans chercher à tout le code derrière la classe j'imagine que vous êtes tenus de passer un Exécuteur testamentaire exemple de la méthode ainsi que les implémentations peuvent engendrer des emplois/threads afin de vérifier l'état de la connexion.
De connexion étant les lectures bloc, afin de mettre en œuvre toute sorte de délai de logique, il est nécessaire d'avoir un autre thread en plus de la lecture, qui peut vérifier l'état de la connexion.
Il sonne comme une décision de conception a été faite qu'à la place du pilote JDBC de la mise en œuvre de la logique interne, de comment/quand frayer threads pour gérer cela, l'API veut vous en tant que client de passer dans un Exécuteur testamentaire qui sera utilisé pour vérifier les délais d'attente. De cette façon, vous que le client peut contrôler les choses comme combien de fois le chèque s'exécute, l'empêchant de frai plus de threads dans votre récipient que vous aimez, etc.
Si vous n'en avez pas déjà un Exécuteur testamentaire exemple autour, vous pouvez simplement créer un par défaut:
Autant que Postgres pilote JDBC est concerné (postgresql-42.2.2.jar), la setNetworkTimeout mise en œuvre ne fait pas usage de l'Exécuteur paramètre. Il suffit simplement de définir le délai spécifié sous-jacents de la prise du délai d'attente à l'aide de la Douille.setSoTimeout méthode.
Il ressemble à la java.sql.Interface de connexion est en essayant de ne pas faire d'hypothèses sur la mise en œuvre et fournit un exécuteur testamentaire qui peut être utilisé si l'application a besoin.