5

Spring を使用して開発された単純な Web アプリがあり、最近 DB 接続に問題があります。私の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例外メッセージと同じです。

4

1 に答える 1

3

古い接続の問題のようなにおいがします。非常に一般的であるか、最初に実行される場合 (ほとんどの場合)、このクエリにのみ表示される可能性があります。

確認事項:

  • サーバー側の接続タイムアウト
  • 接続プールの最小アイドル タイムアウト
  • 接続プールは、使用前に接続を検証します
于 2012-11-21T10:32:50.873 に答える