设为首页 收藏本站
查看: 221|回复: 0

[经验分享] java上传文件时tomcat崩溃

[复制链接]

尚未签到

发表于 2017-1-29 10:27:59 | 显示全部楼层 |阅读模式
在项目中,我用到的tomcat是5.5的,在linux上跑。最近发现在上传文件时,如果连续上传10个左右,就会出现tomcat崩溃的情况。JVM的内存我已经设置成为512M的了。现将代码分别贴出,请各位看一看:(是SSH架构的)

jsp:

<form action="tArenamessage.do" name="tArenamemessageForm" id="tArenamemessageForm" method="POST"  enctype="multipart/form-data" >
...
<input type="file" name="file1" />
<input type="file" name="file2" />
<input type="file" name="file3" />
....
/form>

===============================

struts.xml:

<form-bean name="TArenamemessageForm" type="org.apache.struts.validator.DynaValidatorForm">
  <form-property name="name"  type="java.lang.String" />
  ...
  <form-property name="file1"  type="org.apache.struts.upload.FormFile" />
  <form-property name="file2"  type="org.apache.struts.upload.FormFile" />
  <form-property name="file3"  type="org.apache.struts.upload.FormFile" />
</form>
<!-- 场馆管理模块 -->
<action path="/tArenamessage"  scope="request" type="org.springframework.web.struts.DelegatingActionProxy" validate="false" name="TArenamemessageForm"  >
  <forward name="service" path="/../WEB-INF/jsp/admin/jsp/tArenamessage.jsp"> </forward>  
</action>

====================================

aciton:

//保存
public boolean setBeanValueByDynaActionForm(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response){
this.myExecute(mapping, form, request, response);
DynaActionForm hzForm = (DynaActionForm) form;
...
FormFile localfile = null;
//外景照片
localfile = (FormFile)hzForm.get("file1");
if(localfile!=null) {this.upload(localfile, request, 6L);}

localfile = (FormFile)hzForm.get("file2");
if(localfile!=null) {this.upload(localfile, request, 6L);}

localfile = (FormFile)hzForm.get("file3");
if(localfile!=null) {this.upload(localfile, request, 6L);}

...
}
//上传文件
private void upload(FormFile localfile,HttpServletRequest request,long flag){
String finalFileName="";
if(localfile!=null) {
    finalFileName = Upload.uploadAttachment( localfile , request);//上传文件
}
if(finalFileName != null && !finalFileName.equals("")){
uploadFile(localfile,request,finalFileName,flag);//保存到附件表
}
}

上传文件的类:
public class Upload {
public static String uploadAttachment( FormFile file , HttpServletRequest request){
    if( SystemGlobal.uploadAccess[0].toString().indexOf(file.getContentType())>=0 && file.getFileSize() <= ( 2048 * (Integer.parseInt( SystemGlobal.uploadAccess[1].toString()) ))){ //是图片并且小于?k
      String path = SystemGlobal.webDir(request) + SystemGlobal.uploadAccess[2] +  System.getProperty("file.separator") + StringUtil.date2String() +  System.getProperty("file.separator");
      File dir = new File(path);
      if(!dir.exists()){dir.mkdir();}
      String filename = "";
      if(!file.getFileName().equals("")){
      try{
filename = StringUtil.time2String() + StringUtil.ramdom(4)+ "." + file.getFileName().substring(file.getFileName().length()-3) ;
InputStream stream = file.getInputStream();
FileOutputStream output = new FileOutputStream( path + filename );
int len = -1;
byte[] buf = new byte[102400];
while((len = stream.read(buf)) != -1){
        output.write(buf,0,len);
}
output.close();
stream.close();
}catch(IOException e){Log.error( Upload.class , "upload write stream ha error:" + e);}
}
return filename;
}
return "";
}

==============================
tareamanage.hbm.xml  一对多,一个场馆可以有多个图片

<set name="TUploadfiles" inverse="false" cascade="save-update" fetch="subselect" lazy="false">
<cache usage="read-write"/>
    <key>
        <column name="OBJID" length="50" />
    </key>
    <one-to-many class="com.webaorta.comm.pojo.TUploadfile" />
</set>
         
====================================
大致上就是这些了,代码里是否存在不合理的地方而导致什么原因从而令到tomcat死掉了呢?tomcat里的logs也没有一点报错的信息可以看的。


后来我直接将其转换为open session in view模式,奇怪的是我在windows下可以运行(开发机),但在linux下就报session已经关闭这个错误的了。这又是为什么呢?(服务器是linux系统).

请各位看一看吧,如果搞不好这个可能会丢饭碗的。谢谢大家了。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-334820-1-1.html 上篇帖子: Tomcat中server.xml配置简介 下篇帖子: tomcat停止后启动不起来
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表