2016-01-13 44 views
1

我有2台具有相同的数据库。休眠 - 连接到远程MySQL数据库出现故障时,连接到本地时成功

我使用Hibernate的版本4.3.6.Final

当我使用此配置(连接到本地数据库) - 一切正常:

<persistence-unit name="stg"> 
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> 
    <properties> 
     <!-- 
     <property name="hibernate.ejb.cfgfile" value="/hibernate.cfg.xml"/> 
     --> 
     <property name="hibernate.ejb.naming_strategy" value="org.hibernate.cfg.ImprovedNamingStrategy"/> 
     <property name="hibernate.hbm2ddl.auto" value="update"/> 
     <property name="hibernate.archive.autodetection" value="class, hbm"/> 
     <property name="hibernate.show_sql" value="false"/> 
     <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/> 
     <property name="hibernate.connection.password" value="PASSWORD"/> 
     <property name="hibernate.connection.url" value="jdbc:mysql://127.0.0.1:3306/DATABASENAME?autoReconnect=true"/> 
     <property name="hibernate.connection.username" value="root"/> 
     <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/> 
     <property name="hibernate.c3p0.timeout" value="3600"/> 
     <property name="hibernate.c3p0.min_size" value="20"/> 
     <property name="hibernate.c3p0.max_size" value="100"/> 
     <property name="hibernate.c3p0.acquire_increment" value="5"/> 
     <property name="hibernate.c3p0.maxIdleTimeExcessConnections" value="300"/> 
     <property name="hibernate.c3p0.automaticTestTable" value="hibernate_conn_test"/> 
     <property name="hibernate.c3p0.testConnectionOnCheckout" value="false"/> 
     <property name="hibernate.c3p0.validate" value="false"/> 
     <property name="hibernate.c3p0.testConnectionOnCheckin" value="true"/> 
     <property name="hibernate.c3p0.idle_test_period" value="300"/> 
     <property name="hibernate.c3p0.unreturnedConnectionTimeout" value="3600"/> 
     <property name="hibernate.c3p0.numHelperThreads" value="6"/> 
    </properties> 
</persistence-unit> 

唯一令我改变的是IP到其他机器上,我总是得到同样的错误:

  <property name="hibernate.connection.url" value="jdbc:mysql://2.2.2.2:3306/te?autoReconnect=true"/> 

这是我收到的错误:

[localhost-startStop-1][  ][13 Jan 2016 16:40:43,386] [internal.JdbcServicesImpl    ]: [WARN ] HHH000342: Could not obtain connection to query metadata : Could not create connection to database server. Attempted reconnect 3 times. Giving up. 

[本地主机 - startStop-1] [] [2016年1月13日16:40:48819] [hbm2ddl.SchemaUpdate]:[ERROR] HHH000319:不能获得数据库的元数据 com.mysql.jdbc.exceptions .jdbc4.MySQLNonTransientConnectionException:无法创建连接到数据库服务器。尝试重新连接3次。放弃。 在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) 在sun.reflect.NativeConstructorAccessorImpl.newInstance(来源不明) 在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(来源不明) 在java.lang.reflect.Constructor.newInstance (Unknown Source) at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) at com.mysql.jdbc.Util.getInstance(Util.java:386) at com.mysql.jdbc.SQLError。创建SQLException(SQLError.java:1015) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:975) at com.mysql。 jdbc.SQLError.createSQLException(SQLError.java:920) at com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2395) at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2316) at com.mysql.jdbc.ConnectionImpl。(ConnectionImpl.java :834) 在com.mysql.jdbc.JDBC4Connection(JDBC4Connection.java:47) 在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) 在sun.reflect.NativeConstructorAccessorImpl.newInstance(来源不明) Sun公司。 reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) at com.mysql.jdbc。 ConnectionImpl.getInstance(ConnectionImpl.java:416) 在com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:347) 在com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:131) 在com.mchange.v2.c3p0.WrapperConnectionPoolDataSource。 getPooledConnection(WrapperConnectionPoolDataSource.java:156) 在com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:145) 在com.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager.initializeAutomaticTestTable(C3P0PooledConnectionPoolManager.java:898) 在com.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager.createPooledConnectionPool(C3P0PooledConnectionPoolManager.java:821) 在com.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager.getPool(C3P0PooledConnectionPoolManager.java:331) 在com.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager.getPool(C3P0PooledConnectionPoolManager.java:348) 在com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource。的getConnection(AbstractPoolBackedDataSource.java:140) 在org.hibernate.c3p0.internal.C3P0ConnectionProvider.getConnection(C3P0ConnectionProvider.java:89) 在org.hibernate.tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.prepare(SuppliedConnectionProviderConnectionHelper.java:51) 在org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:194) at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:178) at org.hibernate.internal.SessionFactoryImpl。(SessionFactoryImpl的.java:522) 在org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1857) 在org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl $ 4.perform(EntityManagerFactoryBuilderImpl.java:850) 的组织。 hibernate.jpa.boot.in ternal.EntityManagerFactoryBuilderImpl $ 4.perform(EntityManagerFactoryBuilderImpl.java:843) 在org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.java:398) 在org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl .build(EntityManagerFactoryBuilderImpl.java:842) 在org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:75) 在com.checkpoint.te.shared.service.CustomHibernatePersistence.createEntityManagerFactory(CustomHibernatePersistence.java:43) at com.checkpoint.te.shared.service.CustomHibernatePersistence.createEntityManagerFactory(CustomHibernatePersistence.java:28) at com.checkpoint.te.shared.sql.DbHandler.lifeCycleUp(DbHandler.java:192) at c om.checkpoint.te.shared.BaseLifecycleListener.contextInitialized(BaseLifecycleListener.java:42) at com.checkpoint.te.shared.TomcatLifecycleListener.contextInitialized(TomcatLifecycleListener.java:13) at com.checkpoint.te.pod.PodLifecycleListener。 contextInitialized(PodLifecycleListener.java:43) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4797) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5291) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901) at org.apache.catalina.core.ContainerBase。 addChild(ContainerBase.java:877) at org.apache.catalina.core.StandardHost。 addChild(StandardHost.java:633) at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:977) at org.apache.catalina.startup.HostConfig $ DeployWar.run(HostConfig.java:1655) at java.util.concurrent.Executors $ RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java .util.concurrent.ThreadPoolExecutor $ Worker.run(来源不明) 在java.lang.Thread.run(来源不明) 产生的原因:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链路故障

最后一个数据包发送成功到服务器的时间是0毫秒前。驱动程序尚未收到来自服务器的任何数据包。 在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) 在sun.reflect.NativeConstructorAccessorImpl.newInstance(来源不明) 在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(来源不明) 在java.lang.reflect.Constructor.newInstance (Unknown Source) at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1121) at com.mysql.jdbc.MysqlIO。 (MysqlIO.java:358) at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2489) at com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl。Java的:2334) ...... 48多个 造成的:java.net.ConnectException:连接在java.net.PlainSocketImpl.socketConnect(本机方法) 拒绝 在java.net.AbstractPlainSocketImpl.doConnect(来源不明) 在java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) at java.net.AbstractPlainSocketImpl.connect(Unknown Source) at java.net.SocksSocketImpl.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) (未知源) at java.net.Socket.connect(Unknown Source) at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFacto ry.java:259) at com.mysql.jdbc.MysqlIO。(MysqlIO.java:308) ... 50更多 [localhost-startStop-1] [] [2016年1月13日16:40:48,825] [ hbm2ddl.SchemaUpdate]:[错误] HHH000299:无法完成模式更新 com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:无法创建与数据库服务器的连接。尝试重新连接3次。放弃。 在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) 在sun.reflect.NativeConstructorAccessorImpl.newInstance(来源不明) 在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(来源不明) 在java.lang.reflect.Constructor.newInstance (Unknown Source) at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) at com.mysql.jdbc.Util.getInstance(Util.java:386) at com.mysql.jdbc.SQLError。创建SQLException(SQLError.java:1015) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:975) at com.mysql。 jdbc.SQLError.createSQLException(SQLError.java:920) at com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2395) at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2316) at com.mysql.jdbc.ConnectionImpl。(ConnectionImpl.java :834) 在com.mysql.jdbc.JDBC4Connection(JDBC4Connection.java:47) 在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) 在sun.reflect.NativeConstructorAccessorImpl.newInstance(来源不明) Sun公司。 reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) at com.mysql.jdbc。 ConnectionImpl.getInstance(ConnectionImpl.java:416) 在com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:347) 在com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:131) 在com.mchange.v2.c3p0.WrapperConnectionPoolDataSource。 getPooledConnection(WrapperConnectionPoolDataSource.java:156) 在com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:145) 在com.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager.initializeAutomaticTestTable(C3P0PooledConnectionPoolManager.java:898) 在com.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager.createPooledConnectionPool(C3P0PooledConnectionPoolManager.java:821) 在com.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager.getPool(C3P0PooledConnectionPoolManager.java:331) 在com.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager.getPool(C3P0PooledConnectionPoolManager.java:348) 在com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:140) 在org.hibernate作为。 c3p0.internal.C3P0ConnectionProvider.getConnection(C3P0ConnectionProvider.java:89) at org.hibernate.tool.hbm2ddl。SuppliedConnectionProviderConnectionHelper.prepare(SuppliedConnectionProviderConnectionHelper.java:51) 在org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:194) 在org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:178) 在org.hibernate.internal.SessionFactoryImpl。(SessionFactoryImpl.java:522) 在org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1857) 在org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl $ 4中。执行(EntityManagerFactoryBuilderImpl.java:850) 在org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl $ 4.perform(EntityManagerFactoryBuilderImpl.java:843) 在org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl .java:398) 在org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:842) 在org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:75) 在com.checkpoint.te.shared。 service.CustomHibernatePersistence.createEntityManagerFactory(CustomHibernatePersistence.java:43) at com.checkpoint.te.shared.service.CustomHibernatePersistence.createEntityManagerFactory(CustomHibernatePersistence.java:28) at com.checkpoint.te.shared.sql.DbHandler.lifeCycleUp( (com.checkpoint.te.shared.TomcatLifecycleListener.contextInitialized(TomcatLifecycleListener.java:13))at com.checkpoint.te.pod.PodLifecycleListener.contextInitialized(PodLifecycleListener.java:43) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4797) at org.apache.catalina.core。 StandardContext.startInternal(StandardContext.java:5291) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901) 在org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) 在org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633) 在org.apache.catalina.startup。 HostConfig.deployWAR(HostConfig.java:977) at org.apache.catalina.startup.HostConfig $ DeployWar.run(HostConfig.java:1655) at java.util.concurrent.Executors $ RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java .util.concurrent.ThreadPoolExecutor $ Worker.run(来源不明) 在java.lang.Thread.run(来源不明) 产生的原因:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链路故障

成功发送到服务器的最后一个数据包是0毫秒前。驱动程序尚未收到来自服务器的任何数据包。 在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) 在sun.reflect.NativeConstructorAccessorImpl.newInstance(来源不明) 在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(来源不明) 在java.lang.reflect.Constructor.newInstance (Unknown Source) at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1121) at com.mysql.jdbc.MysqlIO。 (MysqlIO.java:358) 在com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2489) 在com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2334) ... 48更 引起:java .net.ConnectException:连接被拒绝 at java.net.PlainSocketImpl。socketConnect(本机方法) 在java.net.AbstractPlainSocketImpl.doConnect(来源不明) 在java.net.AbstractPlainSocketImpl.connectToAddress(来源不明) 在java.net.AbstractPlainSocketImpl.connect(来源不明) 在java.net上。 SocksSocketImpl.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket。(Unknown Source) at java.net .Socket。(来源不明) 在com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:259) 在com.mysql.jdbc.MysqlIO。(MysqlIO.java:308) ...... 50多个

任何人都可以帮忙吗?

我试着改变端口,但没有帮手。不知道从哪里开始

+0

你尝试连接到MySQL的工作台远程数据库? –

+0

您是否ping过远程服务器? –

+0

嘿,是的,有一个平。我无法连接使用MySQL(我授予所有特权的根),但出于某种原因,我不能远程连接 – user1386966

回答

0

这尖叫“网络问题”。

检查以下项目:

  • 目标主机上的TCP 3306达(运行telnet destination 3306或类似)
  • 检查netstat -na而连接尝试建立:任何SYN_SENT将表明防火墙是在方式。
  • 检查netstat -na在你的MySQL箱 - 在3306 势必到外部接口(或127.0.0.1 /本地主机只?)