我正面臨一個令人困惑的問題。我已經完成了一個jsf web應用程序,該應用程序使用Tomcat7和tomcat-jdbc-pool作爲連接池提供程序來使用hibernate和infinispan。Tomcat7 MySQL連接錯誤
它被部署到具有2個節點的Linode集羣 - 一個數據庫服務器和一個生產服務器。
我可以使用完全相同的Tomcat7副本(我從字面上tarred tomcat目錄並將其提升到服務器以調試此錯誤),即使在連接到實時數據庫實例時,也可以在本地環境中運行應用程序。一切運行良好。
當我嘗試從生產服務器我得到了MysqlIO錯誤的應用程序:
Caused by: java.net.ConnectException: Connection refused
進一步尋找在日誌中我看到:
The last packet sent successfully to the server was 1 milliseconds ago. The driver has not received any packets from the server. com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
我可以在命令連接在prodapp服務器上的線很好 - 即使使用tcp:
mysql -h db01 -u user -p --protocol=tcp
但它只是不會運行運行insi de Tomcat容器。我嘗試了各種各樣的東西,但我真的很難過。我似乎很奇怪,我可以在本地使用同一個Tomcat7副本連接到數據庫服務器,但是當部署到生產環境時,同一個tomcat7副本無法連接 - 即使我可以從該生產服務器上的命令行進行連接。我很難過。
任何幫助,非常感謝。
編輯:解決了我的問題後浪費了太多好生活。答案是我很愚蠢。感謝所有嘗試提供幫助的人。我有應用程序模式W /一個開發和生活模式,連接池一直在讀取開發模式。真正讓人困惑的是sessionfactory被模擬生存,所以它實際上會到達活動數據庫並在啓動時初始化一個連接,所以我可以看到它連接(並在mysql日誌中運行元數據查詢),但是當它實際上去從infinispan獲取連接它爆炸了。噢 - 至少現在它在工作。再次感謝。
你檢查了防火牆嗎? – BalusC 2011-02-16 19:36:56
我沒有(現在我會馬上),但是如果它是防火牆問題,我不會在命令行上被阻止連接嗎? – 2011-02-16 19:53:41