现象
调试过程
- 打开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 B.OBJECT_NAME, L.SESSION_ID, L.LOCKED_MODE
2 FROM V$LOCKED_OBJECT L, DBA_OBJECTS B
3 WHERE B.OBJECT_ID = L.OBJECT_ID
4 AND OBJECT_NAME = 'DOC_SENDENTITY';
OBJECT_NAME SESSION_ID LOCKED_MODE
---------------------- ---------- -----------
DOC_SENDENTITY 469 3
DOC_SENDENTITY 434 3
- 可以看到DOC_SENDENTITY确实是被锁住了,而且LOCKED_MODE=3(Row-X 行独占(RX):用于行的修改)
- 再看看处于等待状态的sql是什么。
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类可以用同多个数据库连接。
分享到:
相关推荐
在页面加载过程中,使用AJAX(Asynchronous JavaScript and XML)技术可以分块加载数据,而不是一次性加载整个页面。这样,进度条可以在每完成一部分请求时更新,提供更精确的加载状态。 3. **前端框架与库**: ...
5. **首次加载数据**:在分页组件初始化后,通常需要调用一次`fetchData`函数,获取第一页的数据并显示。 6. **响应式设计**:为了适应不同设备和屏幕尺寸,可能需要对分页组件进行响应式调整,确保在手机、平板和...
这种模式的网站允许用户以一元为单位购买商品,每个商品的总价格被等分为许多份,每购买一份就相当于参与一次抽奖,当所有份额售罄时,系统通过算法随机选取一名幸运买家获得商品。这种商业模式在一段时间内非常流行...
3. 页面置换算法:在虚拟内存系统中,由于物理内存有限,当需要的页面不在内存时,需要将一些页面换出到磁盘,这一过程称为页面置换。题目中的选项涉及不同算法的缺页次数下限,但未提供具体算法,无法直接判断。...
### Java支付全家桶企业级各类支付手段一站式解决方案 在当今高度数字化的世界中,无论是电子...无论是对于想要从事金融领域开发工作的初学者还是已经有一定经验的专业人士来说,这门课程都将是一次宝贵的学习经历。
- **独占设备**:一次只能被一个进程使用的设备。 - **共享设备**:允许多个进程同时访问的设备。 - **虚拟设备**:通过共享设备模拟独占设备。 #### 十八、内存管理方法 **知识点19:内存管理方法** - **分区管理...
- 数据分页:大量商品列表时,实现分页功能,减少一次性加载的数据量。 8. **响应式设计**: - 适应不同设备:购物网页需考虑手机和平板等移动设备的浏览体验,采用响应式布局或独立的移动版页面。 9. **测试与...
首先,分页是一种组织大量数据的方法,它将数据分割成可管理的小块,让用户逐页浏览,而不是一次性显示所有内容。这在处理数据库查询返回的大量结果时尤其有用。 **PHP** 是一种服务器端脚本语言,常用于Web开发。...
同时,为了防止网络延迟或错误导致的重复支付,系统需要记录并检查每个订单的唯一标识,以确保每一笔交易只被处理一次。 总的来说,玖伍社区的在线支付对接易支付项目涉及到前端与后端的协同工作,以及对易支付API...
4.3.1根据适口属性设计响应式布局: 26 4.3.2同分辨率范围内的流式布局设计 26 4.3.3移动端viewport属性设定 27 4.3.4组件样式的渐进增强设计 27 4.4 本章小结 27 第五章 认我测在线检测服务系统设计 29 5.1认我测...
8. 异步更新队列:Vue.js 在响应式系统中使用异步更新队列,这意味着在同一个事件循环中,所有数据的改变会被收集起来,等到下一个事件循环时一次性更新视图。这样避免了不必要的重复渲染,优化了性能。 9. 路由...
对于记录型信号量,在执行一次 P 操作时,信号量的值应当减 1;当其值为 0 时,进程应阻塞。实现进程互斥时,用一个信号量与一组相关临界区对应,对同一个信号量调用 PV 操作实现互斥。 避免死锁的一个著名的算法是...
JQuery分页插件是一种高效的解决方案,它能够帮助开发者轻松地为网页表格或图表添加分页功能,以提高用户体验,避免一次性加载过多数据导致页面卡顿。本文将深入探讨JQuery分页插件及其在实际应用中的关键知识点。 ...
requestAnimationFrame会在浏览器下一次重绘之前调用指定的回调函数,从而创建流畅的动画效果。 6. 奖项判断与反馈: 抽奖结束后,JavaScript需要根据转盘停止的位置判断出对应的奖项,并给予用户相应的反馈,如弹...
Asp(Active Server Pages)是一种由微软开发的服务器端脚本环境,用于生成动态交互式网页。它允许开发者在HTML代码中嵌入VBScript或JScript等脚本语言,通过服务器端处理数据并返回给客户端浏览器。AJAX...
这个管理器允许在运行时根据需要加载特定的JavaScript文件,避免一次性加载所有脚本,从而提高应用程序的性能。 `import.js`可能是这个动态加载管理器的核心文件,负责处理加载逻辑。以下是一些可能包含在这个`...
如果需要确保每个奖项至少有一次中奖机会,可以使用“鱼丸机算法”(又称“不放回抽样”),在抽奖池中逐个排除已中的奖项。 3. **交互设计**:用户界面的交互性至关重要。jQuery提供了丰富的DOM操作和动画效果,...
还可以通过分页加载消息,减少一次性加载的数据量,避免页面加载过慢。 7. **扩展性**:随着用户增长,可能需要考虑负载均衡和水平扩展。消息系统可以采用发布/订阅模式,以支持高并发和大量用户。 8. **用户界面...
同时,图片懒加载技术也是提高用户体验的关键,避免一次性加载大量图片导致页面卡顿。 8. **事件监听与交互**: 通过绑定各种事件监听器,比如点击事件,源码实现了用户与界面的互动。例如,商品的收藏、加入...