碰到java.lang.IllegalArgumentException: Invalid character found in method name. HTTP method names must be tokens异常的解决办法
设置了一个开机自启动的while(true)方法,运行的好好,但是总会在某一个时刻出现报错。
image.png
出现问题的原因
linux服务器我使用的是nginx配置,nginx的默认最大缓冲区为4K,而tomcat的默认缓冲区最大为8K。
导致出现IllegalArgumentException异常是因为最大缓冲区不够导致的,只需要设置自带的tomcat的缓冲区就行。
解决办法
在conf目录下建立两个java文件即可:
MyTomcatConnectorCustomizer.java,WebServerConfiguration.java
public class MyTomcatConnectorCustomizer implements TomcatConnectorCustomizer {
@Override
public void customize(Connector connector) {
Http11NioProtocol protocol = (Http11NioProtocol) connector.getProtocolHandler();
// 设置最大连接数
protocol.setMaxConnections(2000);
// 设置最大线程数
protocol.setMaxThreads(2000);
protocol.setConnectionTimeout(30000);
// 设置最大缓冲区
protocol.setMaxHttpHeaderSize(8999);
protocol.setMaxSavePostSize(4096);
protocol.setConnectionUploadTimeout(300000);
protocol.setMaxTrailerSize(8192);
protocol.setMaxExtensionSize(8192);
protocol.setMaxSwallowSize(2*1024*1024);
}
}
@Configuration
public class WebServerConfiguration {
@Bean
public EmbeddedServletContainerFactory createEmbeddedServletContainerFactory(){
TomcatEmbeddedServletContainerFactory tomcatFactory = new TomcatEmbeddedServletContainerFactory();
tomcatFactory.setPort(8082);
tomcatFactory.addConnectorCustomizers(new MyTomcatConnectorCustomizer());
return tomcatFactory;
}
}
网友评论