我有一个使用Spring开发的简单Web应用程序,最近我遇到了一些DB连接问题。我的数据库在MS SQL Server 2005上。使用Spring JDBC模板的连接异常
检索数据我使用由框架提供的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
是在异常消息是相同的。
错误的相关部分是前连接:“SQLServerException :通过peer重置连接:套接字写入错误“ – NimChimpsky
如何在spring应用程序配置中声明datasourse? – user1516873