【问题标题】:Spring MVC + Hibernate web application. Web server hangs on load of CRUD operationsSpring MVC + Hibernate Web 应用程序。 Web 服务器在加载 CRUD 操作时挂起
【发布时间】:2013-05-20 21:43:13
【问题描述】:

我正在从事以下项目,但遇到了运行时问题。

http://github.com/dmcquillan314/YouthMinistryHibernate

运行此项目的说明位于 README.md 文件中,尽管目前看起来有些混乱。只需查看原始版本,它应该是可读的。完成这些步骤后,您应该可以运行环境了。

问题出在管理页面上:

http://localhost:portno/admin

目前正在为所有帐户添加管理员角色以进行测试。

关于重新创建问题的步骤,请参阅以下内容:

  1. 注册一个用户帐户,它将自动获得 ROLE_ADMIN 和 ROLE_USER 用户角色。

  2. 导航 /admin 网址

  3. 使用群组管理器添加几个群组

  4. 尝试添加一个文本条目,它应该冻结我注意到当我设置断点时我没有看到任何流量,这很奇怪..

  5. 如果您无法立即重新创建这种“冻结”状态,请继续尝试创建和更新不同的资产,这似乎是页面内容和事件。目前所有控制器都位于管理控制器类中,直到我将它们移动到不同的控制器。

我已经尝试了几件事来尝试修复它,例如更改我的数据库连接池的会话超时设置以及休眠。

我还尝试设置一些断点,希望看到应用程序冻结的位置,但它似乎永远无法到达错误发生时我在 AdminController 类中设置的断点。

日志也有点无用,下面是失败实例的最后几行:

16:32:19.061 [tomcat-http--13] DEBUG o.s.security.web.FilterChainProxy - /admin/createtextentry reached end of additional filter chain; proceeding with original chain
    16:32:19.061 [tomcat-http--13] DEBUG o.s.web.servlet.DispatcherServlet - DispatcherServlet with name 'appServlet' processing POST request for [/YouthMinistryHibernate/admin/createtextentry]
    16:32:19.061 [tomcat-http--13] DEBUG o.s.w.s.m.m.a.RequestMappingHandlerMapping - Looking up handler method for path /admin/createtextentry
    16:32:19.062 [tomcat-http--13] DEBUG o.s.w.s.m.m.a.RequestMappingHandlerMapping - Returning handler method [public java.lang.String com.youthministry.controller.AdminController.handleCreateTextEntry(com.youthministry.domain.TextEntry,org.springframework.validation.BindingResult,org.springframework.ui.Model)]
    16:32:19.062 [tomcat-http--13] DEBUG o.s.b.f.s.DefaultListableBeanFactory - Returning cached instance of singleton bean 'adminController'
    16:32:19.063 [tomcat-http--13] DEBUG o.s.b.f.s.DefaultListableBeanFactory - Returning cached instance of singleton bean 'txManager'
    16:32:19.063 [tomcat-http--13] DEBUG o.s.o.h.HibernateTransactionManager - Creating new transaction with name [com.youthministry.service.impl.GroupServiceImpl.getGroupById]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT,readOnly; ''
    16:32:19.063 [tomcat-http--13] DEBUG o.s.o.h.HibernateTransactionManager - Opened new Session [SessionImpl(PersistenceContext[entityKeys=[],collectionKeys=[]];ActionQueue[insertions=[] updates=[] deletions=[] collectionCreations=[] collectionRemovals=[] collectionUpdates=[] unresolvedInsertDependencies=UnresolvedEntityInsertActions[]])] for Hibernate transaction
    16:32:19.063 [tomcat-http--13] DEBUG o.s.o.h.HibernateTransactionManager - Preparing JDBC Connection of Hibernate Session [SessionImpl(PersistenceContext[entityKeys=[],collectionKeys=[]];ActionQueue[insertions=[] updates=[] deletions=[] collectionCreations=[] collectionRemovals=[] collectionUpdates=[] unresolvedInsertDependencies=UnresolvedEntityInsertActions[]])]
    16:32:19.063 [tomcat-http--13] DEBUG o.s.jdbc.datasource.DataSourceUtils - Setting JDBC   Connection [org.hibernate.engine.jdbc.internal.proxy.ConnectionProxyHandler@2dd92714[valid=true]] read-only

到目前为止,我了解到这不是通过我的数据库发生的死锁,而是在尝试访问连接 ProxyHandler 时 DataSourceUtils 周围某个地方的春季死锁,如服务器日志中最后一个长条目所示。

我使用 Spring 3.1、Hibernate 4.1 和 DBCP 作为我的连接池。

非常感谢任何帮助我已经为这个问题苦苦挣扎了一周左右。

【问题讨论】:

  • 您使用的是什么数据库?当应用程序挂起时,你能得到数据库上的活动事务数吗?这听起来像是一个死锁问题。
  • 我使用 mysql 作为我的数据库。我不确定如何获得活动交易的数量。这可以在mysql控制台或mysql工作台中完成吗
  • 我不是 mysql 专家,但请尝试SHOW ENGINE INNODB STATUS。在这里查看它的含义(以及更多信息):xaprb.com/blog/2006/07/31/how-to-analyze-innodb-mysql-locks
  • 我在相关日志中添加了锁。如果还有其他事情请告诉我
  • 您是否在应用程序冻结时收到此信息?如果没有,请去那里,挂起它,然后提取该信息。另一件事,在您认为问题出在附近的地方,每次您坚持某事(如session.save(textEntry);)时,在其后放置一个session.flush()(如session.save(textEntry); session.flush();)。这将使您在发生异常(或问题;或挂起)时立即看到它(而不是等待休眠刷新session 本身 - 在session.getTransaction().commit() 之后可能发生的事情可能很远真正造成麻烦的是什么)。

标签: mysql spring hibernate spring-mvc apache-commons-dbcp


【解决方案1】:

问题原来是数据库基数问题。

对于集合,我使用的是 OneToMany 而不是应使用 ManyToMany 的 ManyToMany。

至于它为什么挂起,我不确定。但重要的是它现在已经修复了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-19
    相关资源
    最近更新 更多