Unable to connect to MySQL in Cloudbees CommunicationsException: Communications link failure

风流意气都作罢 提交于 2019-12-23 02:21:11

问题


It was requested from this question to post a different question.

I did as recommended in the question above and corrected the cloudbees.xml file correctly. But even then I can't connect. Here's the stack trace:

HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.4.0.v20120608-r11652): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: 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.
Error Code: 0
    com.vaadin.terminal.gwt.server.AbstractApplicationServlet.handleServiceException(AbstractApplicationServlet.java:1010)
    com.vaadin.terminal.gwt.server.AbstractApplicationServlet.service(AbstractApplicationServlet.java:548)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    com.bluecubs.xinco.core.server.filter.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:98)
root cause

javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.4.0.v20120608-r11652): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: 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.
Error Code: 0
    org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:602)
    org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getDatabaseSession(EntityManagerFactoryDelegate.java:186)
    org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:278)
    org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:304)
    org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:282)
    com.bluecubs.xinco.core.server.XincoDBManager.getProtectedEntityManager(XincoDBManager.java:574)
    com.bluecubs.xinco.core.server.XincoDBManager.getEntityManager(XincoDBManager.java:565)
    com.bluecubs.xinco.core.server.XincoDBManager.updateDBState(XincoDBManager.java:280)
    com.bluecubs.xinco.core.server.XincoDBManager.reload(XincoDBManager.java:125)
    com.bluecubs.xinco.core.server.XincoDBManager.reload(XincoDBManager.java:102)
    com.bluecubs.xinco.core.server.vaadin.Xinco.init(Xinco.java:197)
    com.vaadin.Application.start(Application.java:551)
    com.vaadin.terminal.gwt.server.AbstractApplicationServlet.startApplication(AbstractApplicationServlet.java:1219)
    com.vaadin.terminal.gwt.server.AbstractApplicationServlet.service(AbstractApplicationServlet.java:484)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    com.bluecubs.xinco.core.server.filter.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:98)
root cause

Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.4.0.v20120608-r11652): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: 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.
Error Code: 0
    org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:324)
    org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:319)
    org.eclipse.persistence.sessions.DefaultConnector.connect(DefaultConnector.java:138)
    org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
    org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:685)
    org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:213)
    org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:542)
    org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getDatabaseSession(EntityManagerFactoryDelegate.java:186)
    org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:278)
    org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:304)
    org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:282)
    com.bluecubs.xinco.core.server.XincoDBManager.getProtectedEntityManager(XincoDBManager.java:574)
    com.bluecubs.xinco.core.server.XincoDBManager.getEntityManager(XincoDBManager.java:565)
    com.bluecubs.xinco.core.server.XincoDBManager.updateDBState(XincoDBManager.java:280)
    com.bluecubs.xinco.core.server.XincoDBManager.reload(XincoDBManager.java:125)
    com.bluecubs.xinco.core.server.XincoDBManager.reload(XincoDBManager.java:102)
    com.bluecubs.xinco.core.server.vaadin.Xinco.init(Xinco.java:197)
    com.vaadin.Application.start(Application.java:551)
    com.vaadin.terminal.gwt.server.AbstractApplicationServlet.startApplication(AbstractApplicationServlet.java:1219)
    com.vaadin.terminal.gwt.server.AbstractApplicationServlet.service(AbstractApplicationServlet.java:484)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    com.bluecubs.xinco.core.server.filter.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:98)
root cause

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.
    sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1117)
    com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:350)
    com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2393)
    com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2430)
    com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2215)
    com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:813)
    com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
    sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:399)
    com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:334)
    java.sql.DriverManager.getConnection(DriverManager.java:582)
    java.sql.DriverManager.getConnection(DriverManager.java:154)
    org.eclipse.persistence.sessions.DefaultConnector.connect(DefaultConnector.java:98)
    org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
    org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:685)
    org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:213)
    org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:542)
    org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getDatabaseSession(EntityManagerFactoryDelegate.java:186)
    org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:278)
    org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:304)
    org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:282)
    com.bluecubs.xinco.core.server.XincoDBManager.getProtectedEntityManager(XincoDBManager.java:574)
    com.bluecubs.xinco.core.server.XincoDBManager.getEntityManager(XincoDBManager.java:565)
    com.bluecubs.xinco.core.server.XincoDBManager.updateDBState(XincoDBManager.java:280)
    com.bluecubs.xinco.core.server.XincoDBManager.reload(XincoDBManager.java:125)
    com.bluecubs.xinco.core.server.XincoDBManager.reload(XincoDBManager.java:102)
    com.bluecubs.xinco.core.server.vaadin.Xinco.init(Xinco.java:197)
    com.vaadin.Application.start(Application.java:551)
    com.vaadin.terminal.gwt.server.AbstractApplicationServlet.startApplication(AbstractApplicationServlet.java:1219)
    com.vaadin.terminal.gwt.server.AbstractApplicationServlet.service(AbstractApplicationServlet.java:484)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    com.bluecubs.xinco.core.server.filter.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:98)
root cause

java.net.ConnectException: Connection refused
    java.net.PlainSocketImpl.socketConnect(Native Method)
    java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
    java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
    java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
    java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
    java.net.Socket.connect(Socket.java:529)
    java.net.Socket.connect(Socket.java:478)
    java.net.Socket.<init>(Socket.java:375)
    java.net.Socket.<init>(Socket.java:218)
    com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:257)
    com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:300)
    com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2393)
    com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2430)
    com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2215)
    com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:813)
    com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
    sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:399)
    com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:334)
    java.sql.DriverManager.getConnection(DriverManager.java:582)
    java.sql.DriverManager.getConnection(DriverManager.java:154)
    org.eclipse.persistence.sessions.DefaultConnector.connect(DefaultConnector.java:98)
    org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
    org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:685)
    org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:213)
    org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:542)
    org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getDatabaseSession(EntityManagerFactoryDelegate.java:186)
    org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:278)
    org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:304)
    org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:282)
    com.bluecubs.xinco.core.server.XincoDBManager.getProtectedEntityManager(XincoDBManager.java:574)
    com.bluecubs.xinco.core.server.XincoDBManager.getEntityManager(XincoDBManager.java:565)
    com.bluecubs.xinco.core.server.XincoDBManager.updateDBState(XincoDBManager.java:280)
    com.bluecubs.xinco.core.server.XincoDBManager.reload(XincoDBManager.java:125)
    com.bluecubs.xinco.core.server.XincoDBManager.reload(XincoDBManager.java:102)
    com.bluecubs.xinco.core.server.vaadin.Xinco.init(Xinco.java:197)
    com.vaadin.Application.start(Application.java:551)
    com.vaadin.terminal.gwt.server.AbstractApplicationServlet.startApplication(AbstractApplicationServlet.java:1219)
    com.vaadin.terminal.gwt.server.AbstractApplicationServlet.service(AbstractApplicationServlet.java:484)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    com.bluecubs.xinco.core.server.filter.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:98)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.35 logs.

Apache Tomcat/6.0.35

回答1:


This is a common MySQL connection timeout, need to configure the connection pool to check returned connection is live, read related documentation "avoiding database idle timeouts" :

use a validation query in you connection pool settings :

<param name="validationQuery" value="SELECT 1" />

you also should consider using database binding, as cloudbees-web.xml is deprecated :

bees app:bind -a APP_ID -db DB_ID validationQuery="SELECT 1"


来源:https://stackoverflow.com/questions/12747969/unable-to-connect-to-mysql-in-cloudbees-communicationsexception-communications

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!