ja dostaję strasznych MySQL JDBC wyjątków połączenia nieświeże:połączenia Nieświeży, validationQuery nie rozwiąże
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 243,263,541 milliseconds ago. The last packet sent successfully to the server was 243,263,541 milliseconds ago. is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.
Wydaje się, że wszyscy zgadzają się, że ta jest ustalona za pomocą validationQuery + testOnBorrow, ale to nie jest rozwiązanie problemu .
Używam następujące oprogramowanie MySQL 5.1.41-3ubuntu12.10 Connector/J 5.1.18 Tomcat 6.0.24
Oto jak połączenie jest zdefiniowana w server.xml, używamy tomcat-dbcp, aby połączyć połączenia.
<Resource
auth="Container"
driverClassName="com.mysql.jdbc.Driver"
factory="org.apache.commons.dbcp.BasicDataSourceFactory"
logAbandoned="true"
maxActive="75"
maxIdle="20"
maxWait="10000"
name="jdbc/jndiname"
password="password"
removeAbandoned="true"
removeAbandonedTimeout="60"
validationQuery="/* ping */SELECT 1"
testOnBorrow="true"
testOnReturn="true"
timeBetweenEvictionRunsMillis="10000"
testWhileIdle="true"
scope="Shareable"
type="javax.sql.DataSource"
url="jdbc:mysql://host:3306/schema"
username="username" />
W jakiej sytuacji uzyskujesz te nieaktualne wyjątki połączenia? Czy wysyłasz zapytanie na żywo i to jest wynik? Czy po prostu utworzyłeś połączenie JDBC, tak jak to zrobiłeś, lub czy pobierasz je z puli połączeń? – technocrat
Wyjątki połączenia występują każdego ranka, gdy użytkownik łączy się z naszą aplikacją internetową po raz pierwszy. Połączenia pochodzą z puli Tomcat-DBCP. Możemy rozwiązać ten problem, restartując Tomcat każdego dnia, ale to tylko maskowanie prawdziwego problemu. – user763648
Po ponownym uruchomieniu Tomcat wszystko co robisz, powoduje, że sama pula połączeń sama się z powrotem tworzy. Czy uważasz, że poprawką do tego będzie konfiguracja tomcat, konfiguracja mysql lub zmiana kodu pool tomcat-dbcp? .. Tak więc wiem, w którym kierunku szukać odpowiedzi. – technocrat