讨论下struts1的并发问题!

问题描述

先不提struts1过时不过时的问题,就讨论下并发问题。如下代码:private PhraseForm myfrm; private void initFrm(ActionForm form){ this.myfrm=(PhraseForm)form; } private PhraseDao getDAOInstance() throws Exception{ PhraseDao dao=null; try { dao=new PhraseDao(); } catch (Exception e) { this.log.error("getDAOInstance()", e); throw new Exception(); } return dao; } public ActionForward insertObj(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception{ try{ initFrm(form); getDAOInstance().getInsertData(form); }catch (Exception ex) { this.log.error(ex.getMessage(), ex); }finally{ } return mapping.findForward("PostInfo"); } public ActionForward editObj(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception{ try{ initFrm(form); getDAOInstance().getUpdateInfoData(form); }catch (Exception ex) { this.log.error(ex.getMessage(), ex); }finally{ } return mapping.findForward("PostInfo"); } 注意看 initFrm(form); 这个,有人说这样声明成共用的,如果数据量大的时候会导致并发问题,如多个用户同时访问这个action时候,导致数据相互修改!我个人观点是:struts1是每走一次线程,都是独立的线程,除非他上个线程已经处理完,否则下个线程是不会处理,所以不存在这个问题,各位有何意见?指教。。 问题补充:7454103 写道

解决方案

引用但是可以用tomcat 的debug状态测试下,我断点在格式化的form这里,发现他必须先执行完一个dao处理,才会处理第二个dao。这个又怎么解释呢??很疑问?debug 本来就没办法很直接 的 模拟 多线程 访问的问题一次访问没完! 就没办法 下一次访问! 不是吗!你只要坚信 Struts框架只会为每个Action类创建一个Action实例 那么 就有可能 造成 共享的变量 这个值每次被 后面的冲掉了!如何LZ 需要 可以在整个多线程的 访问 测试下!
解决方案二:
引用try { initFrm(form); strSQL=" delete RepeaterInfo where 1=1 and repeaterid= " + "'"+myfrm.getSubsys_id()+"'" ; db.setDBStmt(strSQL); db.doDelete(); DAO 里面这么写!我个人认为是肯定会 共享的! 会造成错误的!原因: 第一个 action_1 myfrm 是 myfrm1 里面的 myfrm.getSubsys_id() 是 1 假如 度很快 又来一个action_2 myfrm.getSubsys_id() 是 2 那么在这个时候你 在 action_1 里面使用myfrm.getSubsys_id() 的时候! 得到的值肯定是 2了! 这样会造成 这个值每次被 后面的冲掉了! 当然你可以这样测试一下! 我表达能力比较差! 呵呵 能帮到你!
解决方案三:
引用private PhraseForm myfrm; private void initFrm(ActionForm form){ this.myfrm=(PhraseForm)form; } 你这么写! 每次方法都会改变 myfrm的值!是吧! 来一个 action myfrm 是 myfrm1 第二个 action myfrm 是 myfrm2这样他就共享了! 但是需要说明: 1.0 正常情况下 action的form 是不会共享的! 2.0 initFrm(form); getDAOInstance().getUpdateInfoData(form); 你这么写 没使用 myfrm 啊! 我感觉 myfrm 多余了! 个人理解 不足之处 一起讨论哈!
解决方案四:
首先你必须承认:Struts框架只会为每个Action类创建一个Action实例(与servlet是一样的)。所有的客户请求共享一个Action实例,并且所有请求线程可以同时执行它的execute()方法。 所以,每个action只有一个实例, 在action打印this也可以看到, 确实是一样的, 引用struts1是每走一次线程,都是独立的线程,除非他上个线程已经处理完,否则下个线程是不会处理, 单实例 多线程 共享资源的! 个人理解!所以, 不要在Action里面使用全局变量记忆数据, 没有意义而且不安全

时间: 2024-11-10 00:30:37

讨论下struts1的并发问题!的相关文章

ajax 调用后台方法大家可以讨论下_AJAX相关

我曾使用过的方法有三种: 1 在页面中加入隐藏的button,并定义了事件,然后执行js的$("#隐藏btnID").click()来 执行后台方法 2 用ajaxPro来执行 3 用ajax的url:页面地址/(静态)方法名称 来执行 在这种方法中,方法必须要求是静态的,所以例如在_default这个页面中 ,示例如下 复制代码 代码如下: public partial class _Default : System.Web.UI.Page { static int sVar = 1

fence 线程-Fence?android中的东西 你们有听说过吗?进来一起讨论下

问题描述 Fence?android中的东西 你们有听说过吗?进来一起讨论下 fence,看过源代码的人肯定不会陌生,中文是栅栏的意思,用在android里好像是为了解决cpu调度时乱序的问题,也就是串行操作?? 我不清楚,有大神出来一起讨论下吗,小弟在研究surfaceflinger,里面太多fence 至今没搞清楚它的机制.....而且网上一点资料都没有!!!让这个问答成为第一份资料吧,日后要是我研究有所结果定会分享!! 下面贴出它类的定义 : 在frameworks/native/incl

识别-讨论下中文按拼音排序的问题

问题描述 讨论下中文按拼音排序的问题 最近在做一个项目,需要根据电影名称的拼音进行排序,举个"栗子"(电影名捏造的): 功夫, 功夫熊猫, 美国梦, 重量级选手, 重庆的山, The Beautiful Life 期待的排序结果为:重庆的山 - 功夫 - 功夫熊猫 - The Beautiful Life - 重量级选手 好了,我们先看下Windows7是怎么排序的. win7的排序结果为:The Beautiful Life - 功夫 - 功夫熊猫 - 美国梦 - 重量级选手 - 重

c语言-讨论下这两个函数fact1和fact2的效率

问题描述 讨论下这两个函数fact1和fact2的效率 int fact1(int limit) { for (i=1;i<limit;i++) fact *= i; } int fact2(int limit) { for (i=limit; i!=0; i--) fact *= i; } 这个是当时上学老师出的一道题,我也觉得应该效率一样,不知道各位有什么不同看法 根据10楼兄弟的回答,我用objdump的反汇编结果如下: 00000000004004c2 <fact1>: 4004

c#编写工控代码&amp;amp;lt;发 动 机 耐 久 测试系统&amp;amp;gt;已开发完,请老鸟进来讨论下以解决的问题和有待解决的问题

问题描述 在这里主要想讨论下成在的问题,分享以总结的经验由于设计的方面比较广,相关内容会在该帖中部分列出部分原代码可以提供需要的人 解决方案 解决方案二:关于程序数据存储-1版以access数据+文本模式Access用来存储比较复杂的结构,文本用来保存大量的数据,防止Access数据库数据太大造成系统不稳定.解决方案三:Ad-di模块设计说明采集模块为时时的独立线程模块解决方案四:报警条件警告停机

关于js联动计算的一些想法,希望讨论下。

问题描述 最近在做一个js页面联动的控件,目标很简单,就是在一个input里输入数字(只能是数字),然后在和其他的页面元素进行计算,并把结果放置到第三个页面元素里,举个例子:col1col2col3result12[](a)31020[](b)30比如我在(a)里面输入3之后,result就变成6,(a)什么都不输入的话,默认的就是col1和col2的和.对于(b)同理.但是要求(a)和(b)可以输入形如:123(一百二十三).123(零点一二三)1.23(一点二三)123.(一百二十三)-12

讨论下关于百度贴吧视频链接识别的问题。

问题描述 百度贴吧大家应该经常用吧插入视频的时候只用输入优酷.土豆.腾讯等视频的URL就可以直接识别出视频链接然后在帖子中播放这个是怎么实现的我看了下他们开放平台的API好像没有类似方法 解决方案 解决方案二:正则表达式吧解决方案三:都来讨论下吧解决方案四:直接访问网站,得到一个30x跳转,然后抓取页面解决方案五:引用3楼caozhy的回复: 直接访问网站,得到一个30x跳转,然后抓取页面 这个确实有一定的可行性

讨论下O/R Maping工具

问题描述 以前相当喜欢LLBLGen.但是现在没破解的,罢了.NHibernate似乎更新好慢.也不知道跑了这么久稳定没,我是一直抱观望态度都没试用过.现在换成vs2008.net3.5环境,有什么推荐的?老鸟们出来讨论下.本来代码丢了很久了,今年又玩起来,想想当初02年就开始搞.net到如今有点物似人非了. 解决方案 解决方案二:关注.解决方案三:不清楚.解决方案四:关注中!!学习楼主的学习精神!!解决方案五:2008里面的Linq很不错的.用起来还简单.但是分层的东西,我一直没有搞出来..解

讨论下软文写作的框架

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 在bbs看到有朋友t楼免费写软文,回音的不多,不知道是大家对写软文都擅长还是都不在意,我看了下这个兄弟的软文还是很可以的,那我在原来广告公司了解到的属于来说,就是策划能力比较强,可是那位兄弟要t楼中彩了才写,于是想到我们能不能自己集思广益在这里开版讨论下 比如各个兄弟的站归纳一下类型,然后大家正对不同的类型发表意见 比如你的站是房产类型的