8

I'm migrating a Spring boot application that used to run in the Tomcat container to a Spring Boot application that runs an embedded Tomcat. My old Tomcat configuration has these configurations in the server.xml:

<Connector executor="tomcatThreadPool" port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" acceptCount="500" acceptorThreadCount="2" maxThreads="150" maxHttpHeaderSize="32768" maxHeaderCount="256" connectionTimeout="20000" maxKeepAliveRequests="-1" redirectPort="8443" useComet="false" socket.appReadBufSize="87380" socket.rxBufSize="87380" socket.performanceConnectionTime="2" socket.performanceLatency="0" socket.performanceBandwidth="1" server="My server" /> 

I was able to set up most of the properties using a bean

@Bean public EmbeddedServletContainerFactory embeddedServletContainerFactory() { TomcatEmbeddedServletContainerFactory tomcatEmbeddedServletContainerFactory = new TomcatEmbeddedServletContainerFactory(); tomcatEmbeddedServletContainerFactory.setProtocol("org.apache.coyote.http11.Http11Nio2Protocol"); tomcatEmbeddedServletContainerFactory.addConnectorCustomizers((TomcatConnectorCustomizer) connector -> { AbstractHttp11JsseProtocol<Nio2Channel> handler = (AbstractHttp11JsseProtocol)connector.getProtocolHandler(); handler.setMaxKeepAliveRequests(-1); handler.setAcceptorThreadCount(2); handler.setMaxHeaderCount(256); connector.setRedirectPort(8443); }); return tomcatEmbeddedServletContainerFactory; } 

And application.xml properties:

server.tomcat.accept-count = 500 server.tomcat.max-threads = 600 server.port = 8080 server.max-http-header-size = 32768 server.connection-timeout = 20000 

However I cannot figure out how to set this part

useComet="false" socket.appReadBufSize="87380" socket.rxBufSize="87380" socket.performanceConnectionTime="2" socket.performanceLatency="0" socket.performanceBandwidth="1" server="My server" 

Can anyone help me please? Thank you

2 Answers 2

5

Try this:

connector.setProperty("useComet", Boolean.toString(false)); connector.setProperty("socket.appReadBufSize", "87380"); connector.setProperty("socket.rxBufSize", "87380"); connector.setProperty("socket.performanceConnectionTime", "2"); connector.setProperty("socket.performanceLatency", "0"); connector.setProperty("socket.performanceBandwidth", "1"); connector.setProperty("server", "My server"); 
Sign up to request clarification or add additional context in comments.

Comments

1
connector.setProperty("socket.appReadBufSize", "87380"); connector.setProperty("socket.rxBufSize", "87380"); connector.setProperty("socket.performanceConnectionTime", "2"); connector.setProperty("socket.performanceLatency", "0"); connector.setProperty("socket.performanceBandwidth", "1"); connector.setProperty("server", "My server"); 

Worked great. However it's important to check the return value of the connector.setProperty. It's trying to find the right method to call for every property, and returns true if the method was found and the property was set. Unfortunately connector.setProperty("useComet", Boolean.toString(false)); did not work, and returned false.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.