2013-05-20 27 views
0

我正在處理以下項目並遇到了運行時問題。Spring MVC + Hibernate Web應用程序。 Web服務器在加載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 

到目前爲止,我才知道,那是不是通過我的數據庫死鎖,但在春季,而死鎖當試圖訪問Connection ProxyHandler時,在服務器日誌中顯示爲最後一個長條目時,在DataSourceUtils周圍的某處。

我使用Spring 3.1,Hibernate 4.1和DBCP作爲我的連接池。

任何幫助,非常感謝我一直在努力解決這個問題一個星期左右現在。

+0

您使用的數據庫是?當應用程序掛起時,您可以獲取數據庫上活動事務的數量嗎?這聞起來像是一個僵局問題。 – acdcjunior

+0

我使用mysql作爲我的數據庫。我不確定如何獲取活動事務的數量。這可以在MySQL控制檯或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。

至於爲什麼它掛在我不確定的結果。但重要的是它現在已經修復了。

相關問題