我收到Socket关闭异常,案例和原因参考:Getting SQLServerException socket close for one particular method in Java
为了解决这个问题,我根据建议使用了(JdbcInterceptors):WebApp (Tomcat-jdbc) Pooled DB connection throwing abandon exception
谢谢大家,但这个解决方案在我的情况下不起作用, 不过,我收到Socket Closed异常, 我使用过jdbcInterceptors,您可以查看下面的配置......
<Resource
name="jdbc/dev"
auth="Container"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="5"
maxWait="-1"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://Localhost:1433;DatabaseName=outingDB"
username="sa"
password="local#123"
removeAbandoned="true"
removeAbandonedTimeout="30"
logAbandoned="false"
abandonWhenPercentageFull="50"
jdbcInterceptors="org.apache.tomcat.jdbc.pool.interceptor.ResetAbandonedTimer"/>
在我的情况下,我的一个SQL查询需要更多的执行时间然后removeAbandonedTimeout, 因此,Connection正在关闭,它将作为Socket Closed异常抛出。
现在我想重置Abandoned Timer,如果正在使用连接,或者是否有另一种方法来增加数据库的套接字超时。
请给我建议,如果是对或错还是有其他方法可以实现这一目标,请提前谢谢。
答案 0 :(得分:1)
根据文档,removeAbandonedTimeout值应设置为应用程序可能具有的最长运行查询。因此,请测量执行最长查询并增加此参数的值所需的时间。
来源:https://tomcat.apache.org/tomcat-8.0-doc/jdbc-pool.html#Common_Attributes