Comment gérer les connexions obsolètes?
La nôtre est une application J2EE, Struts à l'aide de-EJB-Hibernate sur Websphere 6.1 sur Mainframe/DB2 backend, qui a récemment déménagé à la production.
Nous sommes rassis exception de connexion lors de la connexion de l'utilisateur à l'application première fois ou quelques fois cette exception se produit par intermittence.
sur le deuxième essai, l'utilisateur capable de se connecter à l'application. Le message d'erreur exact que j'obtiens est
empcom.ibm.websphere.ce.cm.StaleConnectionException:
Execution failed due to a distribution protocol error that caused deallocation of the conversation.
The command requested could not be completed because of a permanent error condition detected at the target system.
DB2ConnectionCorrelator: AC100B80.A260.090107181206
J'ai activé PRETEST
option dans webshere paramètres et a donné l'intervalle de 60 secondes, mais je suis arriver ce problème..
de bien vouloir partager vos points de vue et de m'aider
je peux vous donner plus de détails si vous avez besoin d'.
OriginalL'auteur | 2009-01-28
Vous devez vous connecter pour publier un commentaire.
Nous avons eu le même problème à la première connexion le matin sur l'un de nos systèmes de production.
La Solution a été de définir la taille minimale pour le pool de connexion à zéro.
Avec taille minimale fixée à une valeur supérieure à zéro (par exemple, un), timed out connexions sont retirés de la piscine lorsqu'ils sont détectés comme non valide, mais certains d'entre eux (dans l'exemple ci-dessus, la dernière) reste dans la piscine (si la taille minimale est de un, une connexion reste dans la piscine, même si elle n'est pas encore une connexion valide).
Prochaine fois qu'une application demande une connexion, la non valide est servi, résultant dans l'exception.
Réglage de la taille minimale à zéro, tous les non valide les connexions sont retirés de la piscine, donc il n'y a aucune chance que la connexion a servi à l'application n'est pas encore valide (parce que, si elle est valide, il reste dans la piscine, si elle n'est pas, est retiré de la piscine).
En utilisant le test pourrait être une alternative valable, mais il faudra un effort supplémentaire, car à chaque fois que la connexion est servi à la demande, est testé.
Min taille du pool de connexion est une WebSphere... je ne suis pas sûr si (où) ce type de configuration est dans le cas d'une application qui s'exécute à l'extérieur d'un conteneur (donc la gestion de leur propre pool de connexion...). désolé :/
dynamicEstablishedConnections.setMinPoolSize(0);
l'utilisation de db2AS400JDBCManagedConnectionPoolDataSource
OriginalL'auteur alexdown
j'ai eu la réponse pour ce
à l'aide de pré-test connexion ancienne et nouvelle connexion, nous pouvons résoudre ce problème.. le test de la requête doit être une requête de base (select sysdate from ..)qui s'exécute à tout moment..
et l'intervalle de temps doit être au maximum d'où le serveur d'application n'obtiendrez pas les frais généraux
OriginalL'auteur