2016-01-13 24 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 /本地主機只?)