【问题标题】:Spring 3 MVC, Tomcat Web App hangs after a few requestsSpring 3 MVC,Tomcat Web App在几个请求后挂起
【发布时间】:2011-07-28 14:06:37
【问题描述】:

我创建了(我的第一个)小型 spring 3 MVC 应用程序,但遇到了一个对我来说有点神秘的问题。

该应用程序有几个表单来操作数据库。我创建了一个控制器 Java 类,它将所有请求映射到 java 方法(参见代码)。 在浏览器中的几个请求后,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 请求。 几次后,请求在 return "usermanager"; 处挂起。

有人对这种行为有解释吗,或者有什么想法?


编辑: 顺便说一句:没有例外或其他东西。网络应用只是挂起。

非常感谢, 问候萨沙

【问题讨论】:

  • 您是否尝试附加调试器或在 VisualVM 中运行您的 tomcat 以查看应用程序挂起的位置?
  • 可以发一下userService.getUserInfo()的代码吗?
  • ...在什么环境下会出现这种情况?你用什么来开发?你用什么与数据库交互:Hibernate、纯 jdbc 等?
  • 请贴出userService.getUserInfo()的代码,我认为有一些连接泄漏

标签: java model-view-controller spring spring-mvc


【解决方案1】:

我发现了错误。看错地方了。

错误确实发生在 getUserInfo() 中。但这是我的数据库连接方法的一个更普遍的问题。

每次进行数据库查询时,我都会调用:connection = dataSource.getConnection(); 这会导致泄漏。 最好检查是否已经有连接:-D

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

顺便说一句,我使用由 jdbcTemplate 访问的嵌入式 Derby 数据库。

有时我们只见树木不见森林 :-)

感谢您的努力。 祝你今天过得愉快 萨沙

【讨论】:

  • 感谢您提供有关连接方法的信息。这解决了我的 tomcat 挂起问题...
猜你喜欢
  • 1970-01-01
  • 2017-06-24
  • 2014-06-12
  • 2019-08-17
  • 1970-01-01
  • 1970-01-01
  • 2022-12-12
  • 2013-05-08
  • 1970-01-01
相关资源
最近更新 更多