我有一个连接到MySQL的简单JDBC应用程序(不使用Spring或Hibernate)。在生产中,MySQL连接使用SSL,但在开发模式中不使用SSL。在开发模式下,我将"&useSSL=false"添加到数据库URL中,以防止MySQL警告“不推荐使用服务器身份验证而建立SSL连接”填充我的日志文件。
现在,我将使用C3P0添加一个数据库连接池。我不是从DriverManager.getConnection获得连接,而是通过调用POOL.getConnection()从C3P0获得连接。
设置C3P0的代码非常简单:
POOL = new ComboPooledDa
我的应用程序收到以下错误:
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.
at sun.reflect.GeneratedConstructorAccessor281.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Delega
我使用的是Play Framework2.2.1、MySQL 5.5和sorm 0.3.10
由于MySQL在指定的空闲超时后丢弃非活动连接,所以我在我的应用程序中得到了这个异常:
[CommunicationsException: Communications link failure The last packet successfully received from the server was 162 701 milliseconds ago. The last packet sent successfully to the server was 0 milliseconds ago.
在我的例子中,为了测试连接,c3p0执行查询花费了太多的时间。
SHOW FULL TABLES FROM `xyz` LIKE 'PROBABLYNOT'
在使用mysql连接器时,版本为5.1.25。有驱动程序支持JDBC4。
在这里提到
如果您使用的JDBC驱动程序确实支持新的(Ish)JDBC4API,则什么也不做。JDBC4连接包括一个名为isValid()的方法,它应该作为一个快速、可靠的连接测试来实现。默认情况下,如果存在该方法,c3p0将使用它。
因此,我的问题是如何知道它是有效的()方法,以及在c3p0调用该方法时执行哪个查询。
请有人为我总结一下我正在使用的在Tomcat下运行的JAVA的方法吗?这个特定的Servlet没有框架,但是使用了服务器/客户端服务,在这里我为客户端用户请求编写了支持后端类和方法。在这些后端自定义类中,我使用Hibernate (希望使用c3p0连接池管理),Hibernate连接到驻留的MySql服务器。
Right now, it appears as though I've forced everything to work by pushing Hibernate JAR's and C3P0 JAR's and JDBC JAR's under
我在tomcat7-stderr.{date}.log文件中发现了以下警告。我的日志文件中充满了这个日志。
Mon Jun 30 12:27:47 GMT+05:30 2014 WARN: Caught while disconnecting...
** BEGIN NESTED EXCEPTION **
java.net.SocketException
MESSAGE: Socket is not connected
STACKTRACE:
java.net.SocketException: Socket is not connected
at java.net.Socket.shu