点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,
我们在SAP Cloud Platform上托管了一个基于Spring的Java Web Tomcat 8应用程序。
我们已将最大上传大小配置为120 MB,并将最大内存中上传大小配置为120 MB,如以下代码段所示:
@配置 公共类CommonsMultipartResolverConfig { 私有静态最终整数MAX_IN_MEMORY_UPLOAD = 120 * 1024 * 1024; 私有静态最终整数MAX_UPLOAD_SIZE = 120 * 1024 * 1024; @豆 @Scope(ConfigurableBeanFactory.SCOPE_SINGLETON) @Lazy(真) 公共CommonsMultipartResolver multipartResolver(){ CommonsMultipartResolver commonsMultipartResolver =新的CommonsMultipartResolver(); commonsMultipartResolver.setMaxUploadSize(MAX_UPLOAD_SIZE); commonsMultipartResolver.setMaxInMemorySize(MAX_IN_MEMORY_UPLOAD); 返回commonsMultipartResolver; }}
当文件小于或等于120 MB阈值时,所有上载都可以正常工作。 当大小超过该大小时,在客户端,我们将得到以下响应:
HTTP状态500-发生内部应用程序错误。 请求:3821930456 a3f704cbf:rsmwebui
在Java应用程序上,我们还为MaxUploadSizeExceededException设置了自定义处理:
@ControllerAdvice 公共类GeneralExceptionHandler扩展ResponseEntityExceptionHandler { @ExceptionHandler(MaxUploadSizeExceededException.class) 公共ResponseEntityhandleMaxSizeException(MaxMaxloadSizeExceededException ex){ long maxSizeInMB = ex.getMaxUploadSize()/1024/1024; ErrorResponse err = ErrorResponse.builder()。message("最大上传大小为" + maxSizeInMB +"已超出MB")。build(); 返回新的ResponseEntity <>(err,HttpStatus.PAYLOAD_TOO_LARGE); } }
尽管上面的代码被触发,但响应始终是上面的html。
从Java应用程序级别的http日志中,我们还注意到,当上传超出限制的文件时,将会记录多个http调用:
我已经读到这可能是由于Tomcat服务器由于其自己的连接器设置(maxPostSize,maxSwallowSize)而重置了连接。
请告知我们如何设法在客户端收到适当的自定义消息,该消息实际上会告知已超过限制。
谢谢!
(89.4 kB)
您好 Flaviu Pop ,
为了使用JavaBuildPack,请考虑特定的Tomcat配置 ,则有以下文件中所述的两个选项:
https://community.pivotal.io/s/article/How-to-Customize-Java-Build-packs-Tomcat-s-Server-xml
我并不是说这应该改变错误500的行为。但是值得一试。
最好的问候,
伊凡
您好, Flaviu Pop ,
很抱歉,我没有注意到您问题的标题。
对于Neo,我是 不知道有任何选项可以修改标准的tomcat配置。 可能不受支持,因为您只能在部署war文件时控制Java启动参数。
但是,可能可以通过Spring来配置tomcat服务器,如下所述:
< p> https://mkyong.com/spring-boot/spring-boot -configure-maxswallowsize-in-embedded-tomcat/此致,
伊万
一周热门 更多>