这算不算是struts的一个bug呢?

hmxdf 2004-08-04 07:05:42
对struts做压力测试的时候发现这样一个问题:
我的Action里面明明写清楚了取得数据库连接,然后调用之后在finally中间释放连接,但发现weblogic总有未被释放的连接。

仔细研究了一下,发现对于每个Action类struts每次调用的时候并不是直接创建的,而是检查内存中是否存在该类以有的实例,如果有,就直接取该实例,否则创建实例,并放入内存。这样做无非是希望提高效率。

但并发访问的时候,实际上是多个线程公用同一个实例,这难道不会有问题吗?

同一个实例的成员变量,例如connection也被多个线程访问,所以出现上面connection未被关闭或者关闭出错的情况。在较少的并发量没什么问题,好像并发量一大,问题就出来了。

不知道是我对struts了解的不够透彻,还是确实struts存在这个问题,还请各位多多指教。
...全文
81 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhufanamo 2004-08-04
  • 打赏
  • 举报
回复
我想说的被楼上说了
xiaoxi777 2004-08-04
  • 打赏
  • 举报
回复
是的,Action类要求是线程安全的,所以你的Connection不要声明为成员属性,而是在你的excute方法中声明为局部变量;或者在代码中使用同步。
lizzz 2004-08-04
  • 打赏
  • 举报
回复
不知道你的action的scope是什么。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧