哪位能使我明天不加班??无语的jspsmart上传组件!

ycfnlxx 2011-07-02 06:14:04
请先了解下背景,是这样子的:

我们系统用到了jspsmart.jar来上传文件,近期系统经常挂死,导致页面打不开,后分析出为jspsmart组件有内存泄漏,其实也就是这个包本身有问题,在m_binArray = new byte[m_totalBytes] ,把所有上传的字节一下子都装到内存中了。。

我的解决方案:

参考之前网上其它兄弟的修改经验,

1.将jspsmart.jar 中 SmartUpload.java中upload方法做了一些判断。
m_totalBytes = m_request.getContentLength();
//我加的部分(try 和if判断),目的是使最大内存只能达到50MB的字节,太多会泄漏。
try
{
if(m_totalBytes>52428800 || m_totalBytes<0)
{
throw new SmartUploadException("the file is too large to upload.");
}
else
{
//结束,另外在catch后抛出异常
m_binArray = new byte[m_totalBytes];

2.在jspsmart.jar 中 SmartUpload.java 添加如下方法来释放:

public void stop()
{
try
{
m_binArray=null;
}
catch(Exception e)
{
System.out.println(e.toString());
}
}

3.在调用smartupload组件的upload方法的系统JAVA类中捕获上面异常,并在使用完成后如下进行调用 stop方法来释放
mySmartUpload.stop();
mySmartUpload = null;


修改完成之后替换类文件和 jspsmart.jar后系统运行了一段时间还是挂了。。。还是jspsmart组件内存泄漏。。。

我不知道还有哪里修改的不对?如果哪位兄弟碰到此问题的请指正下,谢谢!!!


PS:
在之前代码中上传的Servlet中对文件大小都做了如下判断,限制为100K
if (fileSize > Double.parseDouble(maxFileSize))
{
//转向
request.getRequestDispatcher(page).forward(request, response);
}

...全文
122 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ycfnlxx 2011-07-04
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 o2cola 的回复:]
长痛不如短痛,果断换,我用的是spring的upload,包装了commons-fileupload,使用方便
[/Quote]

因为我是在维护一个系统,系统有好几个地方用到这个包了,如果换包改动量比较大,不换又改不好。。。悲剧啊。。。
o2cola 2011-07-04
  • 打赏
  • 举报
回复
长痛不如短痛,果断换,我用的是spring的upload,包装了commons-fileupload,使用方便
ycfnlxx 2011-07-04
  • 打赏
  • 举报
回复
再顶下。。。
ycfnlxx 2011-07-04
  • 打赏
  • 举报
回复
哪位兄弟解决过这种问题啊???
lixinxingjava 2011-07-02
  • 打赏
  • 举报
回复
不能沉啊。。。再顶下。。。
lixinxingjava 2011-07-02
  • 打赏
  • 举报
回复
自己顶下。。。
lixinxingjava 2011-07-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bao110908 的回复:]
什么年代了,还在用 jspsmart?这东西连网站都没了!

现在好的上传组件除了 Apache Commons FileUpload 之外,还有一个是著名的计算机图书出版商 O'Reilly 发布的 COS。

COS 也有好长时间没更新了,但至少官网还在,不过这种东西确实没啥好更新的。只有还是使用 HTTP/1.1 就没啥好改的。
[/Quote]
谢谢火龙果,但是我是在维护一个老系统,现在出现内存泄漏问题了,比较纠集,按上面方法修改了还是不行,如果换包的知工作量会比较大,因为有几个类用到的,如果不换包能不能解决呢?为什么我在JAR包中已经把读入内存大小限制在50M了还是有问题?如果知道请指点下,谢谢。。。
  • 打赏
  • 举报
回复
什么年代了,还在用 jspsmart?这东西连网站都没了!

现在好的上传组件除了 Apache Commons FileUpload 之外,还有一个是著名的计算机图书出版商 O'Reilly 发布的 COS。

COS 也有好长时间没更新了,但至少官网还在,不过这种东西确实没啥好更新的。只有还是使用 HTTP/1.1 就没啥好改的。
Fly_m 2011-07-02
  • 打赏
  • 举报
回复
不使用jsp smart,这个很久没维护了
,使用apache 的commons-fileupload,这个网上有很多例子。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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