java.lang.IllegalArgumentExcepti

2019-02-26  本文已影响0人  小吖么小一郎

碰到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;
    }
}
上一篇下一篇

猜你喜欢

热点阅读