【发布时间】:2015-06-17 05:13:16
【问题描述】:
我将 Java 应用程序部署到 IBM Bluemix 后,由于此错误,它无法创建初始数据库连接:
构建新的 Hibernate SessionFactory 2015-04-11 14:24:04 [main] 错误 o.h.util.JDBCExceptionReporter - 无法创建 PoolableConnectionFactory(通信链路故障最后一个数据包 成功发送到服务器是 0 毫秒前。司机有 没有收到来自服务器的任何数据包。)
我尝试将“hibernate.current_session_context_class”设置为“thread”(当我将相同的应用程序部署到 Google Application Engine 时解决了这个问题),但这对 Websphere Liberty Profile 没有帮助:
<prop key="hibernate.current_session_context_class" >
thread
</prop>
有什么想法吗?
UPDATE 1 --- 这是真正的根本原因。 Bluemix 提供 ClearDB MySQL 服务,但它的管道无法连接到它:(
构建新的 Hibernate SessionFactory 2015-04-11 15:04:49 [main] 错误 o.h.util.JDBCExceptionReporter - 通信链路故障
最后一个成功发送到服务器的数据包是 0 毫秒 前。驱动没有收到服务器发来的任何数据包。
更新 2 --- 如果尝试从管道机器进行连接,即使是实验性 MySQL 数据库也是禁止访问的:
o.h.util.JDBCExceptionReporter - 无法创建 PoolableConnectionFactory(通讯链路故障
最后一个成功发送到服务器的数据包是 0 毫秒 前。驱动程序没有收到来自服务器的任何数据包。) org.hibernate.exception.GenericJDBCException:无法打开连接 在 org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:140) 在 org.hibe 在 org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115) 在 org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75) 引起:org.apache.commons.dbcp.SQLNestedException:无法创建 PoolableConnectionFactory(通讯链路故障
最后一个成功发送到服务器的数据包是 0 毫秒 前。驱动程序没有收到来自服务器的任何数据包。)在 org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1549) 在 org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388) 在 org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044) 在 org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:81) 在 org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446) ... 40 更多原因: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: 通讯链路故障
如果您有任何想法,请告诉我。
【问题讨论】:
-
不确定“它的管道无法连接到它”是什么意思。您是在谈论 DevOps 构建/测试/部署管道吗?您是否在管道的某个特定部分发现了此问题?
-
管道的第一步(构建阶段)运行单元测试,它尝试连接到托管在 Bluemix 外部的 MySQL 数据库(即 ClearDB)。如果我尝试使用“cf push”直接部署应用程序甚至不会启动,因为存在“spring-core.jar”并触发错误:javax.servlet.ServletContainerInitializer: Provider org.cloudfoundry.reconfiguration.spring .AutoReconfigurationServletContainerInitializer 无法实例化.. 原因:java.lang.NoClassDefFoundError: org.springframework.context.ApplicationContextInitializer。问题太多了..
-
我确实在我的 pom.xml 中声明了“spring-context”。看起来“Starter Code”应用程序与管道配合得很好,因为战争是通过“ant”产生的,它将存档文件夹设置为“输出”,我不太确定,但 Maven 构建和部署不可配置直观的方式,我现在使用“-DskipTests”标志只是为了看看我是否可以通过管道进行部署,但到目前为止还没有运气......“部署阶段”继续错过工件(即我的.war),看起来就像它们没有从“build-slave”机器中检索并复制到“deploy-slave”机器中一样。有什么想法???