微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Spring JDBC Template的连接异常

我有一个使用Spring开发的简单Web应用程序,最近我遇到了一些DB连接问题.我的数据库在MS SQL Server 2005上.

为了检索数据,我使用框架提供的JDBCTemplate类实现了几个DAO.

有时我得到这个例外:

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.dao.DataAccessResourceFailureException: StatementCallback; SQL [SELECT [Campaigns].[CampaignID],[CampaignCode],[CampaignType],[StartDate],[EndDate],[Status],[FirstUpdate],[LastUpdate],[FirstUpdateUserID],[LastUpdateUserID],[CampaignDescriptions].[Description] FROM [Campaigns] INNER JOIN [CampaignDescriptions] ON [Campaigns].[CampaignID] = [CampaignDescriptions].[CampaignID] ORDER BY [StartDate] DESC]; Connection reset by peer: socket write error; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: Connection reset by peer: socket write error
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:894)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

只有在执行报告的查询时才会出现异常.

我无法理解造成这个问题的原因.任何的想法?

执行查询的方法是:

@Transactional(propagation = Propagation.NEVER)
public Campaign[] getAll() {
    List<Campaign> campList = getJdbcTemplate()
            .query(BASE_QUERY,
                    new CampaignMapper());
    return campList.toArray(new Campaign[0]);
}

其中BASE_QUERY在异常消息中是相同的.

解决方法:

它有点像陈旧的连接问题.它可能只出现在此查询中,如果它很常见或者是第一个要执行的(大多数时候).

要检查的事项:

>服务器端连接超时
>连接池minium空闲超时
>连接池在使用前验证连接

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐