2013-05-20 3 views
0

Я работаю над следующим проектом и столкнулся с проблемой выполнения.Веб-приложение Spring MVC + Hibernate. Веб-сервер зависает при загрузке CRUD-операций

http://github.com/dmcquillan314/YouthMinistryHibernate

Инструкции для запуска этого проекта находятся в README.md файле, хотя это выглядит немного грязный на данный момент. Просто просмотрите необработанную версию и она должна быть читаемой. После того, как эти шаги будут выполнены, вы должны запустить среду.

Вопрос находится на странице администратора, который расположен по адресу:

http://localhost:portno/admin 

Все счета в настоящее время добавляется с ролью администратора для целей тестирования.

Что касается шагов, чтобы воссоздать этот вопрос увидеть следующее:

  1. Регистрация для учетной записи пользователя, он будет автоматически получить ROLE_ADMIN и роли пользователей ROLE_USER.

  2. Перемещения по/администратору URL

  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 [[email protected]2dd92714[valid=true]] read-only 

До сих пор я узнал, что это не тупиковый через свою базу данных, а скорее тупик весной где-то вокруг DataSourceUtils при попытке доступа к Connection ProxyHandler, как показано выше, в журналах сервера как последняя длинная запись.

Я использую Spring 3.1, Hibernate 4.1 и DBCP в качестве пула соединений.

Любая помощь очень ценится Я боролся с этой проблемой в течение недели или около того.

+0

Что вы используете? Когда приложение зависает, вы можете получить количество активных транзакций в БД? Это пахнет проблемой тупика. – acdcjunior

+0

Я использую mysql в качестве моей базы данных. Я не уверен, как получить количество активных транзакций. Это можно сделать в консоли mysql или в workbench mysql. – dmcqu314

+0

Я не эксперт в mysql, но попробуйте 'SHOW ENGINE INNODB STATUS'. Посмотрите, что это значит (и многое другое) здесь: http://www.xaprb.com/blog/2006/07/31/how-to-analyze-innodb-mysql-locks/ – acdcjunior

ответ

0

Проблема оказалась проблемой мощности базы данных.

Для коллекций я использовал OneToMany вместо ManyToMany, где нужно было использовать ManyToMany.

Что касается того, почему это было висит в результате, я не уверен. Но важная часть заключается в том, что она исправлена.