我有一个带Apache的Ubuntu服务器 - > mod_jk - > Tomcat 6 - > MySQL的。每次Tomcat加载一个新的* .war或它重新启动时,它都会给我这个错误:
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
现在奇怪的是:有时候经过一段时间(有时是几分钟或几小时)而什么都不做,应用程序就像一个魅力 - 没有任何其他错误。
使用tomcat本身(使用此上下文容器)建立连接,并使用127.0.0.1进行连接 phpmyadmin也没有问题。
答案 0 :(得分:0)
雷米, 遗憾的是,这个问题没有“简单”的答案,因为它在很多方面都有所不同。您收到的错误是tomcat回复表示通信问题的一般通信错误,而不是详细说明问题所在。
首先,我建议检查你的mysql是否正在侦听127.0.0.1,而不仅仅是localhost。差异化的原因是拥有ipv6的服务器(即使它只是本地:: 1)将首先尝试使用此连接。
如果你做netstat -an | grep LISTEN,您应该看到端口3306.该套接字正在监听什么?确保这与您在tomcat设置中指定的内容相匹配,然后从那里开始。