繁体   English   中英

休眠-连接到本地成功时,连接到远程mysql数据库失败

[英]Hibernate - connecting to remote mysql database fails, when connecting to local succeeds

我有2台具有相同数据库的机器。

我正在使用休眠版本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.

[localhost-startStop-1] [] [2016年1月13日16:40:48819] [hbm2ddl.SchemaUpdate]:[错误] 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(未知源)在com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1015)在com.mysql.jdbc.Util.getInstance(Util.java:386)在com.mysql.jdbc.Util.handleNewInstance(Util.java:411) )com.mysql.jdbc.SQLError.createSQLException(SQLError.java:975)com.mysql.jdbc.SQLError.createSQLException(SQLError.java:com.mysql.jdbc.SQLError.createSQLException(SQLError.java:975)处920)com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2395)com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2316)com.mysql.jdbc.ConnectionImpl。(ConnectionImpl.java: 834)在com.mysql.jdbc.JDBC4Connection。(JDBC4Connection.java:47)在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)在sun.r com.mysql.jdbc.Util.handleNewInstance(Util.java :)上java.lang.reflect.Constructor.newInstance(未知源)的sun.reflect.DelegatingConstructorAccessorImpl.newInstance(未知源)的eflect.NativeConstructorAccessorImpl.newInstance(未知源) 411)在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。 c3p0.impl.C3P0PooledConnectionPoolManager.initializeAutomaticTestTable(C3P0PooledConnectionPoolManager.java:898)位于com.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager.createPooledConnectionPool(C3P0PooledConnectionPoolManager.java:821 om.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager.getPool(C3P0PooledConnectionPoolManager.java:331)at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager.getPoolc3P0PooledConnectionPoolManager.java:位于org.hibernate.c3p0.internal.C3P0ConnectionProvider.getConnection(C3P0ConnectionProvider.java:89)处的impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:140)位于org.hibernate.tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.prepare(Supplied)(51)在org.hibernate.internal.SessionFactoryImpl。(SessionFactoryImpl。)上的org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:178)上的org.hibernate.tool.hbm2ddl.SchemaUpdate.java.194。 org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1857)的org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl $ 4.perform(EntityManagerFactoryBuilderImpl.java:850)的org.hibernate.jp org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.java:398)上的org.hibernate.jpa.boot.internal的a.boot.internal.EntityManagerFactoryBuilderImpl $ 4.perform(EntityManagerFactoryBuilderImpl.java:843) .EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:842)位于org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:75)位于com.checkpoint.te.shared.service.CustomHibernatePersistence.createEntityManagerFactory(CustomHibernatePersistence.java:43) com.checkpoint.te.shared.sql.DbHandler.lifeCycleUp(DbHandler.java:192)处的com.checkpoint.te.shared.service.CustomHibernatePersistence.createEntityManagerFactory(CustomHibernatePersistence.java:28)。位于com.checkpoint.te.shared的BaseLifecycleListener.contextInitialized(BaseLifecycleListener.java:42)。位于com.checkpoint.te.p的TomcatLifecycleListener.contextInitialized(TomcatLifecycleListener.java:13) org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4797)上的od.PodLifecycleListener.contextInitialized(PodLifecycleListener.java:43)在org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5291)在org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)的org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)在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),位于org.apache。 catalina.startup.HostConfig $ DeployWar.run(HostConfig.java:1655)在java.util.concurrent.Executors $ RunnableAdapter.call(未知源)在java.util.concurrent.FutureTask.run(java.util处) java.util.concurrent.ThreadPoolExecutor $ Worker.run(未知源)处的java.lang.Thread.run(未知源)的.concurrent.ThreadPoolExecutor.runWorker(未知源) )由以下原因引起:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链接失败

成功发送到服务器的最后一个数据包是在0毫秒之前。 驱动程序尚未收到来自服务器的任何数据包。 在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)在sun.reflect.NativeConstructorAccessorImpl.newInstance(未知源)在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(未知源)在java.lang.reflect.Constructor.newInstance(未知源)在com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1121)在com.mysql.jdbc.MysqlIO。(MysqlIO.java:358)在com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1121)在com.mysql.jdbc.Util.handleNewInstance(Util.java:411)在com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2489)处com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2334)... 48更多原因:java.net.ConnectException:连接被拒绝在java.net.java.net.AbstractPlainSocketImpl.doConnect(本地方法)在java.net.java.net.AbstractPlainSocketImpl.connectToAddress(未知源)在java.net.AbstractPlainSocketImpl.connect(本地方法) .net.SocksSocketImpl.connect(未知源)在java.net.Socket.c java.net.Socket.connect上的onnect(未知源)java.net.Socket上的onnect(未知源)。com.mysql.jdbc.StandardSocketFactory.connect(java.net.Socket上的(未知源)。 StandardSocketFactory.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(未知源)在com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1015)在com.mysql.jdbc.Util.getInstance(Util.java:386)在com.mysql.jdbc.Util.handleNewInstance(Util.java:411) )com.mysql.jdbc.SQLError.createSQLException(SQLError.java:975)com.mysql.jdbc.SQLError.createSQLException(SQLError.java:com.mysql.jdbc.SQLError.createSQLException(SQLError.java:975)处920)com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2395)com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2316)com.mysql.jdbc.ConnectionImpl。(ConnectionImpl.java: 834)在com.mysql.jdbc.JDBC4Connection。(JDBC4Connection.java:47)在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)在sun.r com.mysql.jdbc.Util.handleNewInstance(Util.java :)上java.lang.reflect.Constructor.newInstance(未知源)的sun.reflect.DelegatingConstructorAccessorImpl.newInstance(未知源)的eflect.NativeConstructorAccessorImpl.newInstance(未知源) 411)在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。 c3p0.impl.C3P0PooledConnectionPoolManager.initializeAutomaticTestTable(C3P0PooledConnectionPoolManager.java:898)位于com.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager.createPooledConnectionPool(C3P0PooledConnectionPoolManager.java:821 om.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager.getPool(C3P0PooledConnectionPoolManager.java:331)at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager.getPoolc3P0PooledConnectionPoolManager.java:位于org.hibernate.c3p0.internal.C3P0ConnectionProvider.getConnection(C3P0ConnectionProvider.java:89)处的impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:140)位于org.hibernate.tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.prepare(Supplied)(51)在org.hibernate.internal.SessionFactoryImpl。(SessionFactoryImpl。)上的org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:178)上的org.hibernate.tool.hbm2ddl.SchemaUpdate.java.194。 org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1857)的org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl $ 4.perform(EntityManagerFactoryBuilderImpl.java:850)的org.hibernate.jp org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.java:398)上的org.hibernate.jpa.boot.internal的a.boot.internal.EntityManagerFactoryBuilderImpl $ 4.perform(EntityManagerFactoryBuilderImpl.java:843) .EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:842)位于org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:75)位于com.checkpoint.te.shared.service.CustomHibernatePersistence.createEntityManagerFactory(CustomHibernatePersistence.java:43) com.checkpoint.te.shared.sql.DbHandler.lifeCycleUp(DbHandler.java:192)处的com.checkpoint.te.shared.service.CustomHibernatePersistence.createEntityManagerFactory(CustomHibernatePersistence.java:28)。位于com.checkpoint.te.shared的BaseLifecycleListener.contextInitialized(BaseLifecycleListener.java:42)。位于com.checkpoint.te.p的TomcatLifecycleListener.contextInitialized(TomcatLifecycleListener.java:13) org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4797)上的od.PodLifecycleListener.contextInitialized(PodLifecycleListener.java:43)在org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5291)在org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)的org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)在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),位于org.apache。 catalina.startup.HostConfig $ DeployWar.run(HostConfig.java:1655)在java.util.concurrent.Executors $ RunnableAdapter.call(未知源)在java.util.concurrent.FutureTask.run(java.util处) java.util.concurrent.ThreadPoolExecutor $ Worker.run(未知源)处的java.lang.Thread.run(未知源)的.concurrent.ThreadPoolExecutor.runWorker(未知源) )由以下原因引起:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链接失败

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

有人可以帮忙吗?

我尝试更改端口,但没有帮助。 不知道从哪里开始

这尖叫“网络问题”。

检查以下项目:

  • 可以在TCP 3306上访问目标主机(运行telnet destination 3306或类似的主机)
  • 在尝试建立连接时,请检查netstat -na :任何SYN_SENT都将指示防火墙在路上。
  • 在您的MySQL框中检查netstat -na -3306是否绑定到外部接口(或仅绑定到127.0.0.1 / localhost?)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM