论坛首页 Java企业应用论坛

请教一个关于webwork长时间使用后的session管理混乱的疑似问题

浏览 6731 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2005-07-15  
我工作几年已经做了4个超过千万级的项目。目前这个项目采用的是webwork(前面都是struts)。因此,这里出现的问题我不感确定是否是本人的使用问题还是配置问题,姑且使用疑似问题来描述。
1、问题描述
    一个表单提交页面。页面上的数据都能正常提交,页面逻辑非常简单,就是简单的录入。但经过一段时间后(不定,可能几天,可能1、2周)后,页面就突然无法工作,在表单上填写的任何数据传到后台都是 NULL。不关是当前页面有问题,而且是所有的页面都有问题,都无法提交。
    注:在Action中获取表单数据采用的是定义FO封装的形式,在页面上控件的命名是以 fo.name 的形式进行赋值的。
2、页面的简要描述
    页面的代码如下(有删节,但不影响问题的描述)
<body leftmargin="0" topmargin="0" class="bg_tree_01">
<form name="updform" action="/mymodel/itemupd.action" method="post" >
 
<table width="99%" height="100%" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td width="17" height="18"><img src="/dutymgt/images/zdpd_3.gif" width="17" height="18"></td>
    <td background="/dutymgt/images/zdpd_5.gif">&</td>
    <td width="17" height="18"><img src="/dutymgt/images/zdpd_7.gif" width="17" height="18"></td>
  </tr>
  <tr>
    <td background="/dutymgt/images/zdpd_12.gif">&</td>
    <td align="left" valign="top" bgcolor="#DCF0FC">
      <table width="100%" border="0" cellpadding="2" cellspacing="1" class="tab-bg">
        <tr class="tr02">
          <td class="tr01_a" align=right width="20%">项目名称 :</td>
          <td class="tr02"  colspan="3" >     
            <input type="text" class="input_01" validlength="80" name="dmJobItem.itemName" value="1212"   valid="checknull,checklength" msgobject="项目名称" >&*
          </td>
        </tr>
        <tr class="tr02">
          <td class="tr01_a" align=right>项目说明 :</td>
          <td class="tr02" colspan="3" >
                 <textarea name="dmJobItem.itemDesc" cols="80"  rows="3" valid="checklength"  msgobject="项目说明">1212</textarea>
          </td>
        </tr>
        <input type="hidden" name="dmJobItem.id"  value="3148" >
        <input type="hidden" name="dmJobItem.roomId"  value="jkzys.wgzx.gz.gmcc" >
      </table>
      <table width="89%" height="9" border="0" cellpadding="0" cellspacing="0">
        <tr> 
          <td height="5"></td>
        </tr>
      </table>
      <table width="100%" border="0" cellspacing="1" cellpadding="2">
        <tr> 
          <td align="center">
           <input name="save" type="button" class="button_03" value="提  交" onclick="return toadd();;"> & 
           <input name="cancel" type="button" class="button_03" value="返  回" onclick="return goback();;"></td>
        </tr>
      </table>
    </td>
    <td background="/dutymgt/images/zdpd_14.gif">&</td>
  </tr>
</table>
</form>

<script language="javascript">
 
function  toadd();{   
   if(!checkforminput(););{
    return false;
   }
   
   formfilter();;
   document.forms[0].submit();;
   return true;
}
function goback();{
  window.history.back(-1);;
}
</script>
 
</body>
</html>


   从上面的JSP代码段可以看出,所有的隐藏字段都已赋值,所以需要填写的内容也可以确定已经填写。
   呵呵,还希望这里走过路过的有缘兄弟给予帮助。是配置问题还是其他?不要只说一句话:到webwork的官方网站上去问。谢谢各位。
   发表时间:2005-07-15  
到webwork的官方网站上去问





也是白搭
弄一个能够重现这个错误的简化版本出来,再去官方网站问......
0 请登录后投票
   发表时间:2005-07-15  
唉,的确很麻烦。因为不是比现的。。而是长时间使用后出现的。

环境:weblogic 8 sp4
       oracle9i
还不需要什么压力测试,就10几个测试人员点点。。。点一轮就出现了。出现后,redeploy一下web应用就好了。不采用FO来封装的应用(是另外一个war包,直接在action从request中获取数据),目前还未出现问题。
0 请登录后投票
   发表时间:2005-07-15  
查查parameters interceptor
查查ognl
不能重复那就在关键点输出debug信息,反正都是OpenSource的,源码都有,先定位问题所在吧。
0 请登录后投票
   发表时间:2005-07-15  
把这个应用分别部署到Tomcat和Resin上面测试

此外WebLogic分别采用HotSpot和JRockit JVM重复测试


看看测试结果如何
0 请登录后投票
   发表时间:2005-07-15  
在出现这种情况的时候,写两个简单的jsp来测试一下提交是否也会这样,以判断是WW2的问题还是WLS的问题。
0 请登录后投票
   发表时间:2005-07-15  
我感觉是weblogic 的问题。

bea实现的jsp规范加了些自己东西。
以前我也头疼过。
0 请登录后投票
   发表时间:2005-07-15  
zkj_beyond 写道
我感觉是weblogic 的问题。

bea实现的jsp规范加了些自己东西。
以前我也头疼过。


  的确,我无法确定是WLS的问题还是Webwork的问题。但生产环境上的WebLogic部署了很多Web应用。。出问题的Web应用只是其中一个,出问题的Web应用的所有表单的提交后,得到的都是NULL。其他Web应用依然正常使用。出问题的的应用重新部署后都恢复正常了。
   由于本机经常调试,经常Redeploy,所以目前急需要在开发环境重现。准备用压力测试工具先轰一把。

    另外,研究了一下webwork的代码和日志。发现webwork针对应用服务器是WebLogic的情况,做了一些特殊的处理。。日志见下:
[ 2005-七月-15 18:11:18 ] <DEBUG> :: Setting static parameters {}
[ 2005-七月-15 18:11:18 ] <DEBUG> :: Setting params weblogic.servlet.internal.Pa
ramMap@5f307c


    因此,不经过深入研究,目前还不敢完全说是webwork的问题。但至少目前可能从配置上和使用方法上,我的WebLogic和Webwork存在配合上的问题。继续定位中。。。。。

   同时,感谢所有回复问题的朋友。。
0 请登录后投票
   发表时间:2005-07-16  
在webwork2.1.7的ServletDispatcher.java的202行开始
        // test wether param-access workaround needs to be enabled
        if (servletConfig.getServletContext();.getServerInfo();.indexOf("WebLogic"); >= 0); {
            log.info("WebLogic server detected. Enabling parameter access work-around.");;
            paramsWorkaroundEnabled = true;
        } else {
            log.debug("Parameter access work-around disabled.");;
        }


第232行
            if (paramsWorkaroundEnabled); {
                request.getParameter("foo");; // simply read any parameter (existing or not); to "prime" the request
            }


似乎是webwork的开发者已经意识到了webwork和weblogic之间的配合问题了。

这里也有一个帖子说这个的。
http://blog.csdn.net/hongbo781202/archive/2005/03/29/333007.aspx
0 请登录后投票
   发表时间:2005-07-18  
stephen 写道
在webwork2.1.7的ServletDispatcher.java的202行开始
        // test wether param-access workaround needs to be enabled
        if (servletConfig.getServletContext();.getServerInfo();.indexOf("WebLogic"); >= 0); {
            log.info("WebLogic server detected. Enabling parameter access work-around.");;
            paramsWorkaroundEnabled = true;
        } else {
            log.debug("Parameter access work-around disabled.");;
        }


第232行
            if (paramsWorkaroundEnabled); {
                request.getParameter("foo");; // simply read any parameter (existing or not); to "prime" the request
            }


似乎是webwork的开发者已经意识到了webwork和weblogic之间的配合问题了。

这里也有一个帖子说这个的。
http://blog.csdn.net/hongbo781202/archive/2005/03/29/333007.aspx


WebLogic的确没有遵循规范。
webwork在 getParamaterMap 方法中也提到了,并建议针对Application可以复写该方法。

改了一下,再测试一周看看。。

谢谢楼上各位给出的有建设性的建议。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics