Add Jetty acceptors and selectors support
Add support for Jetty `acceptors` and `selectors` configuration, either directly on the `JettyEmbeddedServletContainerFactory` or via `server.jetty.acceptors`/`server.jetty.selectors` server properties. Fixes gh-5380 Closes gh-5649
This commit is contained in:
committed by
Phillip Webb
parent
1bf10f2926
commit
1def64e49e
@@ -91,6 +91,7 @@ import org.springframework.util.StringUtils;
|
||||
* @author Andrey Hihlovskiy
|
||||
* @author Andy Wilkinson
|
||||
* @author Eddú Meléndez
|
||||
* @author Venil Noronha
|
||||
* @see #setPort(int)
|
||||
* @see #setConfigurations(Collection)
|
||||
* @see JettyEmbeddedServletContainer
|
||||
@@ -108,6 +109,16 @@ public class JettyEmbeddedServletContainerFactory
|
||||
|
||||
private boolean useForwardHeaders;
|
||||
|
||||
/**
|
||||
* The number of acceptor threads to use.
|
||||
*/
|
||||
private int acceptors = -1;
|
||||
|
||||
/**
|
||||
* The number of selector threads to use.
|
||||
*/
|
||||
private int selectors = -1;
|
||||
|
||||
private List<JettyServerCustomizer> jettyServerCustomizers = new ArrayList<JettyServerCustomizer>();
|
||||
|
||||
private ResourceLoader resourceLoader;
|
||||
@@ -143,7 +154,7 @@ public class JettyEmbeddedServletContainerFactory
|
||||
ServletContextInitializer... initializers) {
|
||||
JettyEmbeddedWebAppContext context = new JettyEmbeddedWebAppContext();
|
||||
int port = (getPort() >= 0 ? getPort() : 0);
|
||||
Server server = new Server(new InetSocketAddress(getAddress(), port));
|
||||
Server server = createServer(port);
|
||||
configureWebAppContext(context, initializers);
|
||||
server.setHandler(addHandlerWrappers(context));
|
||||
this.logger.info("Server initialized with port: " + port);
|
||||
@@ -163,6 +174,21 @@ public class JettyEmbeddedServletContainerFactory
|
||||
return getJettyEmbeddedServletContainer(server);
|
||||
}
|
||||
|
||||
private Server createServer(int port) {
|
||||
Server server = new Server();
|
||||
server.setConnectors(new Connector[] { createConnector(port, server) });
|
||||
return server;
|
||||
}
|
||||
|
||||
private ServerConnector createConnector(int port, Server server) {
|
||||
ServerConnector connector = new ServerConnector(server, this.acceptors,
|
||||
this.selectors);
|
||||
InetSocketAddress address = new InetSocketAddress(getAddress(), port);
|
||||
connector.setHost(address.getHostName());
|
||||
connector.setPort(address.getPort());
|
||||
return connector;
|
||||
}
|
||||
|
||||
private Handler addHandlerWrappers(Handler handler) {
|
||||
if (getCompression() != null && getCompression().getEnabled()) {
|
||||
handler = applyWrapper(handler, createGzipHandler());
|
||||
@@ -489,6 +515,24 @@ public class JettyEmbeddedServletContainerFactory
|
||||
this.useForwardHeaders = useForwardHeaders;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the number of acceptor threads to use.
|
||||
* @param acceptors the number of acceptor threads to use
|
||||
* @since 1.4.0
|
||||
*/
|
||||
public void setAcceptors(int acceptors) {
|
||||
this.acceptors = acceptors;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the number of selector threads to use.
|
||||
* @param selectors the number of selector threads to use
|
||||
* @since 1.4.0
|
||||
*/
|
||||
public void setSelectors(int selectors) {
|
||||
this.selectors = selectors;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets {@link JettyServerCustomizer}s that will be applied to the {@link Server}
|
||||
* before it is started. Calling this method will replace any existing configurations.
|
||||
|
||||
Reference in New Issue
Block a user