2011-07-28 49 views
1

我創建了(我的第一個)小彈簧3 MVC應用程序,但遇到了一個對我來說有點神祕的問題。Spring 3 MVC,Tomcat Web App在幾個請求後掛起

該應用程序有幾種形式來操縱數據庫。我創建了一個Controller Java類,它將所有請求映射到java Methods(請參閱代碼)。 在瀏覽器中發出幾個請求後,Web應用程序崩潰。操作數據庫條目的代碼被成功調用,但頁面的重新加載似乎失敗。

控制器類:

@RequestMapping("/usermanager") 
public String getUserInfo(Map<String, Object> map) throws ServletException { 
    try { 
     map.put("userInfo", userService.getUserInfo()); 
    } catch (Exception e) { 
     throw new ServletException(e); 
    } 
    return "usermanager"; 
} 

@RequestMapping("/updateUserInfo") 
public String updateUserInfo(@ModelAttribute("userInfo") User user) throws NamingException, SQLException { 
    userService.storeUserInfo(user); 
    return "redirect:/service/usermanager"; 
} 

結構是很容易的,該請求的UserManager被調用來顯示錶中的數據。該網站顯示一個表單,我可以編輯我的數據,提交表單調用updateUserInfo請求。 幾次請求掛起後返回「usermanager」;.

有人對此行爲有解釋嗎?或者是一個想法?


編輯: 順便說一句:沒有例外或別的東西。網絡應用程序只是掛起。

非常感謝, 問候薩沙

+0

您是否試圖在VisualVM中附加調試器或運行tomcat來查看應用程序掛起的位置? – nfechner

+1

您可以發佈'userService.getUserInfo()'的代碼嗎? –

+0

......在什麼環境下會發生這種情況?你用什麼來發展?你用什麼來與db進行交互:Hibernate,純jdbc等? – vector

回答

2

我發現的bug。看着錯誤的地方。

確實在getUserInfo()中發生錯誤。但這是我的數據庫連接方法更常見的問題。

每次做一個數據庫查詢,我打電話:connection = dataSource.getConnection(); 這會導致泄漏。 這是更好地檢查是否已經有一個連接:-D

if (connection == null || connection.isClosed()) { 
    connection = dataSource.getConnection(); 
} 

BTW我使用的是由JdbcTemplate的訪問的嵌入式Derby數據庫。

有時候我們看不到樹木不見森林:-)

感謝你的努力。 祝您有個愉快的日子 Sascha

+0

感謝有關連接方法的信息。這解決了我與tomcat掛起的問題... –