首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

初学struts2的bbs程序完成了,但多点几上就死机

2012-09-27 
初学struts2的bbs程序完成了,但多点几下就死机struts2测试单个action运行正常,我做的是一个小型bbs论坛,多

初学struts2的bbs程序完成了,但多点几下就死机
struts2测试单个action运行正常,我做的是一个小型bbs论坛,多点几次多发几个贴,发着发着往往程序就卡住没了响应了,必须重启tomcat,重启之后连续发5、6个贴,第7、8个又死机,每次都是这样。感觉执行到第7、8个action程序就会卡死,不知道这是不是我程序的问题?还是tomcat版本的问题?不稳定?求教了!!
我在struts.xml中用了这样的配置,action name="post_*" class="loginAction" method="{1}"> ...

我在网上查到,有人说是因为用了 query.setFirstResult(firstResult); query.setMaxResults(pageSize); 这两个函数所以出问题,结果我就用getSession().createSQLQuery(sql)用sql的方式分页,结果还是多点几次程序就没响应。

也有人说可能是程序有死循环,可怎么查死循环啊?我感觉我程序中无非实现一些登录、注册、发帖看帖等动作而已啊。

我的struts.xmi是

XML code
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"><struts> <package name="pengBBS" extends="struts-default">      <interceptors>       <!--判断是否登录 和 是否有访问权限  <interceptor-ref name="token"></interceptor-ref>-->       <interceptor name="login" class="pengbbs.controller.LoginInterceptor" />             <interceptor-stack name="myStack">                           <interceptor-ref name="login"></interceptor-ref>                   <interceptor-ref name="defaultStack"></interceptor-ref>                  </interceptor-stack>         </interceptors>            <default-interceptor-ref name="myStack"></default-interceptor-ref>         <!--  全局拦截 -->      <global-results>       <!-- 拦截没登录返回结果,第一个是已经登录,不必重复登录 -->            <result name="noLogin" type="redirect">/login.jsp</result>            <!-- 拦截没有权限返回结果 -->            <result name="noPower" type="redirect">/no_power.jsp</result>                 </global-results>       </package><constant name="struts.objectFactory" value="spring" /> <package name="main" extends="pengBBS"><action name="login_*" class="loginAction" method="{1}"> <result name="error">/login.jsp</result><result name="logout">/login.jsp</result><result name="success" type="chain">post_getBoards</result> <interceptor-ref name="defaultStack"></interceptor-ref></action><action name="register_*" class="registerAction" method="{1}"><result name="success" type="chain">post_getBoards</result><result name="error">/error.jsp</result><result name="input">/register.jsp</result><interceptor-ref name="defaultStack"></interceptor-ref></action><action name="post_*" class="postAction" method="{1}"><interceptor-ref name="defaultStack"></interceptor-ref> <result name="success">/post_view.jsp</result><result name="topics">/post_view.jsp</result><result name="board">/index.jsp</result><result name="notPost">/error.jsp</result><result name="view">/viewDetail.jsp</result><result name="reply" type="chain">post_viewDetail</result><result name="invalid.token">/error.jsp</result></action><action name="post" class="postAction"><interceptor-ref name="defaultStack"></interceptor-ref> <interceptor-ref name="token"></interceptor-ref><result name="success">/post_view.jsp</result><result name="invalid.token">/error.jsp</result></action></package></struts>     



请高手帮看下。谢谢!!!

[解决办法]
什么叫 :发着发着往往程序就卡住没了响应了?
是控制台报错了?项目停止服务?显示“无法显示该网页”?
[解决办法]
看看你程序运行时内存和cpu的消耗以及对数据的性能影响,是否有打开的连接没有关闭,如果用到了spring,各个方法是否符合spring的事物管理。。。原因有很多
[解决办法]
估计就是数据库连接只开不关。
要不就是你的java逻辑部分里面存在着内存泄露,仔细检查下!
[解决办法]
楼上说的对。 你执行sql增删改,都要close一下。 或者用hibernate那个你就不用管了
[解决办法]
看看 是不是连接没关闭
[解决办法]
有sql,就用hibernate,
[解决办法]
恐怕不是你10楼贴出来这个问题。。。

你这个改法只是增大了连接池的容量,建议你缩小容量再测试:
<property name="maxIdle" value="5"></property>
<property name="maxWait" value="5000"></property>
<property name="maxActive" value="5"></property>
<property name="defaultAutoCommit" value="true"></property>
<property name="removeAbandonedTimeout" value="600"></property>

参数修改为池大小只有5个,超时自动回收改为600秒。
你再试试看,至少发6个帖子,查询6次帖子来试试看是否还能活着。

我认为本质问题你可能还没找到。
[解决办法]
应该是你打开某些连接 使用后并没有关闭。

热点排行