介绍
SpringBoot中的tomcat如何修改和优化?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
在做项目的时候,把SpringBoot的项目打包成安装包了,在客户上面安装运行,一切都是那么的完美,可是发生了意外,对方突然说导出导入的文件都不行了。我急急忙忙的查看日志,发现报了一个错误
. io .IOException:临时上传位置(C: \ Windows \ Temp \ tomcat.1351070438015228346.8884 \ \ Tomcat根\ localhost \]工作无效 org.apache.catalina.connector.Request.parseParts (Request.java: 2821) org.apache.catalina.connector.Request.parseParameters (Request.java: 3185) org.apache.catalina.connector.Request.getParameter (Request.java: 1116) org.apache.catalina.connector.RequestFacade.getParameter (RequestFacade.java: 381) org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal (HiddenHttpMethodFilter.java: 84) org.springframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java: 107) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java: 193) org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java: 166) org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal (CharacterEncodingFilter.java: 200) org.springframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java: 107) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java: 193) org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java: 166) org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java: 199) org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java: 96) org.apache.catalina.authenticator.AuthenticatorBase.invoke (AuthenticatorBase.java: 490) org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java: 139) org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java: 92) org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java: 74) org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java: 343) org.apache.coyote.http11.Http11Processor.service (Http11Processor.java: 408) org.apache.coyote.AbstractProcessorLight.process (AbstractProcessorLight.java: 66) org.apache.coyote.AbstractProtocol ConnectionHandler.process美元(AbstractProtocol.java: 791) org.apache.tomcat.util.net.NioEndpoint SocketProcessor.doRun美元(NioEndpoint.java: 1417) 在org.apache.tomcat.util.net.SocketProcessorBase.run (SocketProcessorBase.java: 49) java.util.concurrent.ThreadPoolExecutor.runWorker(未知源) java.util.concurrent.ThreadPoolExecutor Worker.run美元(未知来源) org.apache.tomcat.util.threads.TaskThread WrappingRunnable.run美元(TaskThread.java: 61) java.lang.Thread.run(未知源)
经过分析发现,这是tomcat在启动的时候会生成一个临时的上传文件保存的位置,但是这个位子默认是放在系统的临时文件夹中。当这个tomcat创建的文件夹被系统删除后,这时在上传文件就出现问题了。可能对方服务器装上了360管家,会自动删掉好似
针对这一个异常有以下解决方法
1。万能的重启,绝大多数的问题解决方法,“你重启一下试试”。但是这个方法只能解决得了一时,解决不了一世啊。
2。在配置文件中加上
server.tomcat.basedir=自定义目录
3。启动jar包的时候加上参数-Djava.io。tmpdir=自定义目录
java jar xx。jar -Djava.io。tmpdir=自定义目录
4。添加配置bean
进口org.springframework.boot.web.servlet.MultipartConfigFactory; 进口org.springframework.context.annotation.Bean; 进口org.springframework.context.annotation.Configuration; 进口javax.servlet.MultipartConfigElement; @ configuration 公开课TomcatBeanConfig {/* * *文件上传临时路径 */@ bean MultipartConfigElement MultipartConfigElement () { MultipartConfigFactory工厂=new MultipartConfigFactory (); factory.setLocation(“自定义目录“); 返回factory.createMultipartConfig (); } }
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -分隔符- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
接着说优化,至于优化,我在解决上面的问题发现,tomcat中有一个配置