java - Uploading large files won't work in Tomcat -


i have web application (java / spring / hibernate) running in production on tomcat7.

i manage upload files need able upload large files (i have 36mb file upload).

whenever upload large file 405 (method not allowed) error

the log show following lines:

415157         2014-11-19 14:53:03,662 info [http-bio-443-exec-52] com.eloan.controller.api.uploadfilecontroller wfpirsum.prn uploaded!  428860         2014-11-19 14:53:17,365 warn [http-bio-443-exec-52] org.springframework.web.servlet.pagenotfound request method 'post' not supported 

the first line code:

@requestmapping(value = "/boi", method = requestmethod.post) @checksessionannotation(type = 99) @responsebody public integer upload(multiparthttpservletrequest request, httpservletresponse response) throws e000eloanexception {     lenderdetails anss = usservice.getcurrentuserlenderdetails();     int totallines = 0;      if (null == anss) { // user not in session...         throw new e666usernotinsessionexception("user not in session");     }      // fix ie     response.setcontenttype("text/html");      // 1. build iterator     iterator<string> itr = request.getfilenames();     multipartfile mpf = null;      string doc_type = request.getparameter("doc_type");     list<string> lines = new arraylist<string>();     // 2. each file     while (itr.hasnext()) {          mpf = request.getfile(itr.next());         log.info(mpf.getoriginalfilename() + " uploaded! ");          try {              bufferedreader reader = new bufferedreader(new inputstreamreader(mpf.getinputstream(), "windows-1255"));             string line = null;             while ((line = reader.readline()) != null) {                 // log.info("read [" + line + "] doc_tyep [" + doc_type +                 // "]");                 lines.add(line);                 // boiservice.addbankofisraelentry(line, doc_type);                 totallines++;             }          } catch (ioexception e) {             log.error("file upload error ", e);             throw new e107illegalcallexception("file upload error");         }      } ... 

in order support large files i've tried following (set max size in multipart config annotation , function call:

@enablewebmvc @configuration @enableasync @multipartconfig(maxfilesize = 52428800) public class eloanapiwebmvcconfigureradapter extends webmvcconfigureradapter { /**  * supports fileuploads.  */ @bean public multipartresolver multipartresolver() {     commonsmultipartresolver multipartresolver = new commonsmultipartresolver();     multipartresolver.setmaxuploadsize(52428800);     return multipartresolver; } } 

i've tried set in server.xml connector:

<connector port="443" protocol="http/1.1" sslenabled="true"            maxthreads="150" scheme="https" secure="true" maxpostsize="52428800"            keystorefile="/var/lib/tomcat7/conf/keystore" keystorepass="lj6xk8sk"            clientauth="false" sslprotocol="tls" server="eloansecurebsd-server" /> 

and in web.xml file:

<multipart-config>         <max-file-size>52428800</max-file-size>         <max-request-size>52428800</max-request-size>     <file-size-threshold>52428800</file-size-threshold>     </multipart-config> 

it won't work!

btw - when run in eclipse (using jetty server main) runs without issues...

thank guys!

at end problem memory configuration of tomcat. getting out of memory exception didnt c in logs until i've set org.springframework logs debug (really can't understand why situation).

after giving process more memory started work well.

i'm adding here log i've seen if interest one...

112361 2014-11-19 16:23:42,500 info [http-bio-443-exec-22] com.eloan.controller.api.uploadfilecontroller wfpirsum.zip uploaded! 120026 2014-11-19 16:23:50,165 debug [http-bio-443-exec-22] org.springframework.web.multipart.commons.commonsmultipartresolver cleaning multipart file [files[]] original filename [wfpirsum.zip], stored @ [/var/lib/tomcat7/work/catalina/localhost/_/upload_54d020ea_b425_473f_a2c7_3dc7d8d4a330_00000001.tmp] 120043 2014-11-19 16:23:50,182 debug [http-bio-443-exec-22] org.springframework.web.servlet.dispatcherservlet not complete request org.springframework.web.util.nestedservletexception: handler processing failed; nested exception java.lang.outofmemoryerror: java heap space @ org.springframework.web.servlet.dispatcherservlet.triggeraftercompletionwitherror(dispatcherservlet.java:1259) ~[spring-webmvc-3.2.0.release.jar:3.2.0.release] @ org.springframework.web.servlet.dispatcherservlet.dodispatch(dispatcherservlet.java:945) ~[spring-webmvc-3.2.0.release.jar:3.2.0.release] @ org.springframework.web.servlet.dispatcherservlet.doservice(dispatcherservlet.java:856) ~[spring-webmvc-3.2.0.release.jar:3.2.0.release] @ org.springframework.web.servlet.frameworkservlet.processrequest(frameworkservlet.java:915) [spring-webmvc-3.2.0.release.jar:3.2.0.release] @ org.springframework.web.servlet.frameworkservlet.dopost(frameworkservlet.java:822) [spring-webmvc-3.2.0.release.jar:3.2.0.release] @ javax.servlet.http.httpservlet.service(httpservlet.java:646) [tomcat-servlet-api-3.0.jar:na] @ org.springframework.web.servlet.frameworkservlet.service(frameworkservlet.java:796) [spring-webmvc-3.2.0.release.jar:3.2.0.release] @ javax.servlet.http.httpservlet.service(httpservlet.java:727) [tomcat-servlet-api-3.0.jar:na] @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:303) [tomcat-catalina-7.0.52.jar:7.0.52] @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:208) [tomcat-catalina-7.0.52.jar:7.0.52] @ org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:220) [tomcat-catalina-7.0.52.jar:7.0.52] @ org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:122) [tomcat-catalina-7.0.52.jar:7.0.52] @ org.apache.catalina.authenticator.authenticatorbase.invoke(authenticatorbase.java:610) [tomcat-catalina-7.0.52.jar:7.0.52] @ org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:170) [tomcat-catalina-7.0.52.jar:7.0.52] @ org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:98) [tomcat-catalina-7.0.52.jar:7.0.52] @ org.apache.catalina.valves.accesslogvalve.invoke(accesslogvalve.java:950) [tomcat-catalina-7.0.52.jar:7.0.52] @ org.apache.catalina.core.standardenginevalve.invoke(standardenginevalve.java:116) [tomcat-catalina-7.0.52.jar:7.0.52] @ org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:408) [tomcat-catalina-7.0.52.jar:7.0.52] @ org.apache.coyote.http11.abstracthttp11processor.process(abstracthttp11processor.java:1040) [tomcat-coyote-7.0.52.jar:7.0.52] @ org.apache.coyote.abstractprotocol$abstractconnectionhandler.process(abstractprotocol.java:607) [tomcat-coyote-7.0.52.jar:7.0.52] @ org.apache.tomcat.util.net.jioendpoint$socketprocessor.run(jioendpoint.java:315) [tomcat-coyote-7.0.52.jar:7.0.52] @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1145) [na:1.7.0_65] @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:615) [na:1.7.0_65] @ java.lang.thread.run(thread.java:745) [na:1.7.0_65] java.lang.outofmemoryerror: java heap space @ java.util.arrays.copyofrange(arrays.java:2694) ~[na:1.7.0_65] @ java.lang.string.<init>(string.java:203) ~[na:1.7.0_65] @ java.io.bufferedreader.readline(bufferedreader.java:349) ~[na:1.7.0_65] @ java.io.bufferedreader.readline(bufferedreader.java:382) ~[na:1.7.0_65] @ com.eloan.controller.api.uploadfilecontroller.uploadbankofisrael(uploadfilecontroller.java:91) ~[uploadfilecontroller.class:na] @ com.eloan.controller.api.uploadfilecontroller$$fastclassbycglib$$aa339559.invoke(<generated>) ~[spring-core-3.2.0.release.jar:na] @ org.springframework.cglib.proxy.methodproxy.invoke(methodproxy.java:204) ~[spring-core-3.2.0.release.jar:3.2.0.release] @ org.springframework.aop.framework.cglibaopproxy$cglibmethodinvocation.invokejoinpoint(cglibaopproxy.java:698) ~[spring-aop-3.2.0.release.jar:3.2.0.release] @ org.springframework.aop.framework.reflectivemethodinvocation.proceed(reflectivemethodinvocation.java:150) ~[spring-aop-3.2.0.release.jar:3.2.0.release] @ org.springframework.aop.aspectj.methodinvocationproceedingjoinpoint.proceed(methodinvocationproceedingjoinpoint.java:80) ~[spring-aop-3.2.0.release.jar:3.2.0.release] @ com.eloan.aspect.checksessionaspect.checksession(checksessionaspect.java:53) ~[checksessionaspect.class:na] @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) ~[na:1.7.0_65] @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:57) ~[na:1.7.0_65] @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) ~[na:1.7.0_65] @ java.lang.reflect.method.invoke(method.java:606) ~[na:1.7.0_65] @ org.springframework.aop.aspectj.abstractaspectjadvice.invokeadvicemethodwithgivenargs(abstractaspectjadvice.java:621) ~[spring-aop-3.2.0.release.jar:3.2.0.release] @ org.springframework.aop.aspectj.abstractaspectjadvice.invokeadvicemethod(abstractaspectjadvice.java:610) ~[spring-aop-3.2.0.release.jar:3.2.0.release] @ org.springframework.aop.aspectj.aspectjaroundadvice.invoke(aspectjaroundadvice.java:65) ~[spring-aop-3.2.0.release.jar:3.2.0.release] @ org.springframework.aop.framework.reflectivemethodinvocation.proceed(reflectivemethodinvocation.java:161) ~[spring-aop-3.2.0.release.jar:3.2.0.release] @ org.springframework.aop.interceptor.exposeinvocationinterceptor.invoke(exposeinvocationinterceptor.java:90) ~[spring-aop-3.2.0.release.jar:3.2.0.release] @ org.springframework.aop.framework.reflectivemethodinvocation.proceed(reflectivemethodinvocation.java:172) ~[spring-aop-3.2.0.release.jar:3.2.0.release] @ org.springframework.aop.framework.cglibaopproxy$dynamicadvisedinterceptor.intercept(cglibaopproxy.java:631) ~[spring-aop-3.2.0.release.jar:3.2.0.release] @ com.eloan.controller.api.uploadfilecontroller$$enhancerbycglib$$9a9d7ba.uploadbankofisrael(<generated>) ~[spring-core-3.2.0.release.jar:na] @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) ~[na:1.7.0_65] @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:57) ~[na:1.7.0_65] @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) ~[na:1.7.0_65] @ java.lang.reflect.method.invoke(method.java:606) ~[na:1.7.0_65] @ org.springframework.web.method.support.invocablehandlermethod.invoke(invocablehandlermethod.java:219) ~[spring-web-3.2.0.release.jar:3.2.0.release] @ org.springframework.web.method.support.invocablehandlermethod.invokeforrequest(invocablehandlermethod.java:132) ~[spring-web-3.2.0.release.jar:3.2.0.release] @ org.springframework.web.servlet.mvc.method.annotation.servletinvocablehandlermethod.invokeandhandle(servletinvocablehandlermethod.java:104) ~[spring-webmvc-3.2.0.release.jar:3.2.0.release] @ org.springframework.web.servlet.mvc.method.annotation.requestmappinghandleradapter.invokehandlemethod(requestmappinghandleradapter.java:746) ~[spring-webmvc-3.2.0.release.jar:3.2.0.release] @ org.springframework.web.servlet.mvc.method.annotation.requestmappinghandleradapter.handleinternal(requestmappinghandleradapter.java:687) ~[spring-webmvc-3.2.0.release.jar:3.2.0.release] 120056 2014-11-19 16:23:50,195 debug [quartzscheduler_quartzscheduler-ip-10-101-11-1001416406956159_clustermanager] org.springframework.jdbc.datasource.datasourceutils returning jdbc connection datasource 120056 2014-11-19 16:23:50,195 debug [quartzscheduler_quartzscheduler-ip-10-101-11-1001416406956159_clustermanager] org.springframework.scheduling.quartz.localdatasourcejobstore clustermanager: check-in complete. 120089 2014-11-19 16:23:50,228 debug [http-bio-443-exec-22] org.springframework.web.servlet.dispatcherservlet dispatcherservlet name 'appservlet' processing post request [/404.html] 120089 2014-11-19 16:23:50,228 debug [http-bio-443-exec-22] org.springframework.web.servlet.mvc.method.annotation.requestmappinghandlermapping looking handler method path /404.html 120103 2014-11-19 16:23:50,242 debug [http-bio-443-exec-22] org.springframework.web.servlet.mvc.method.annotation.requestmappinghandlermapping did not find handler method [/404.html] 120104 2014-11-19 16:23:50,243 debug [http-bio-443-exec-22] org.springframework.web.servlet.handler.simpleurlhandlermapping matching patterns request [/404.html] [/*.html] 120104 2014-11-19 16:23:50,243 debug [http-bio-443-exec-22] org.springframework.web.servlet.handler.simpleurlhandlermapping uri template variables request [/404.html] {} 120104 2014-11-19 16:23:50,243 debug [http-bio-443-exec-22] org.springframework.web.servlet.handler.simpleurlhandlermapping mapping [/404.html] handlerexecutionchain handler [org.springframework.web.servlet.resource.resourcehttprequesthandler@507f1f06] , 1 interceptor 120105 2014-11-19 16:23:50,244 debug [http-bio-443-exec-22] org.springframework.web.servlet.mvc.annotation.responsestatusexceptionresolver resolving exception handler [org.springframework.web.servlet.resource.resourcehttprequesthandler@507f1f06]: org.springframework.web.httprequestmethodnotsupportedexception: request method 'post' not supported 120106 2014-11-19 16:23:50,245 debug [http-bio-443-exec-22] org.springframework.web.servlet.mvc.support.defaulthandlerexceptionresolver resolving exception handler [org.springframework.web.servlet.resource.resourcehttprequesthandler@507f1f06]: org.springframework.web.httprequestmethodnotsupportedexception: request method 'post' not supported 120106 2014-11-19 16:23:50,245 warn [http-bio-443-exec-22] org.springframework.web.servlet.pagenotfound request method 'post' not supported

Comments

Popular posts from this blog

java - Oracle EBS .ClassNotFoundException: oracle.apps.fnd.formsClient.FormsLauncher.class ERROR -

c# - how to use buttonedit in devexpress gridcontrol -

nvd3.js - angularjs-nvd3-directives setting color in legend as well as in chart elements -