记一次页面无响应调式过程
现象?
在发文节点,点击确定,页面没有响应.?
调试过程
?
打开eclipse,进入documentInfoSubmit.jsp页面进行断点调试。当执行到docManage.updateSendEntities(CFWDW, docId, 0, 0)的时候,eclipse也没有任何响应了。重新断点调试,进入docManage.updateSendEntities方法,跟踪到DispatchInfoBean.updateSendEntities方法体内,执行到ps.executeUpdate();的时候,eclipse再次无法响应,这时候,程序执行的是"update doc_sendentity set entitynames=? where ndocid=? and sendtype=?"语句,应该是数据库无法响应。进入数据库看看是不是doc_sendentity被锁住了SQL> SELECT SQL_TEXT 2 FROM V$SQL SQ 3 WHERE SQ.SQL_ID IN (SELECT SE.SQL_ID 4 FROM V$SESSION SE 5 WHERE SE.BLOCKING_SESSION IS NOT NULL); SQL_TEXT ------------------------------------------------------------------------ update doc_sendentity set entitynames=:1 where ndocid=:2 and sendtype=:3
- ?正好和eclipse里面无法响应时执行的语句对应上啦。通过查找,在documentInfoSubmit.jsp页面执行docManage.updateSendEntities之前,已经执行过"update doc_sendentity set dispatchEntityNames=? where ndocid=? and sendtype=? and ndocsortid=?",而且还没有commit,因为这俩次执行update doc_sendentity用的是不同的数据库连接,所以第二次update doc_sendentity同一行数据的时候,就处于等待状态,造成了页面,eclipse,数据库都无法响应这一现象。结论?在jsp页面和java类中如果对同一条数据做处理,还想保证事务一致性,jsp页面和java类需要用同一个数据库连接。在jsp页面和java类中如果没有对同一条数据做处理,想保证事务一致性,jsp页面和java类可以用同多个数据库连接。
?