In order to learn the startup process of jetty, I have read a lot of articles and gave the following startup flowchart. Now combine jetty.xml to understand the startup process of jetty
- Server
Find jetty.xml in the project, you will see the configuration of Server in the first line, and a Server will be created at this time The object, org.eclipse.jetty.server.Server is the location of the Server class, _threadPool, _connectors, _stopAtShutdown are all fields in the Server.
- ThreadPool
Set used, so it will use the setThreadPool method in Server to set a QueuedThreadPool In the thread pool, the minimum number of threads is set to 20, and the maximum number of threads is 1024.
- Connector
这是jetty.xml中connector的配置,标签使用的是Call,就会直接调用Server中的addConnector方法添加connector,其中connector使用的是Connector的子类SelectChannelConnector。
maxIdleTime是一个连接的最大空闲时间,如果空闲时间超过这个值就会关闭连接。
Acceptors:用于表示用于调用ServerSocket或ServerSocketChannel中accept方法的线程数,建议这个数字小于或等于可用处理器的2倍。
//AcceptQueueSize:用于表示ServerSocket 或ServerSocketChannel中最大可等待的请求数.
|
|
|
"Server" class = "org.eclipse.jetty.server.Server" > "Server" class = "org.eclipse.jetty.server.Server" >
|
|
|
"ThreadPool" > class = "org.eclipse.jetty.util.thread.QueuedThreadPool" > "minThreads" > 20 "maxThreads" > 1024 "ThreadPool" >
class = "org.eclipse.jetty.util.thread.QueuedThreadPool" >
"minThreads" > 20
"maxThreads" > 1024
public void setThreadPool(ThreadPool threadPool) { if (_threadPool!= null ) removeBean(_threadPool); _container.update( this , _threadPool, threadPool, "threadpool" , false ); _threadPool = threadPool; if (_threadPool!= null ) addBean(_threadPool); } |
public void setThreadPool(ThreadPool threadPool) { if (_threadPool!= null ) removeBean(_threadPool); _container.update( this , _threadPool, threadPool, "threadpool" , false ); _threadPool = threadPool; if (_threadPool!= null ) addBean(_threadPool); } |
public void setThreadPool(ThreadPool threadPool) { if (_threadPool!= null ) removeBean(_threadPool); _container.update( this , _threadPool, threadPool, "threadpool" , false ); _threadPool = threadPool; if (_threadPool!= < code class="java keyword" style="font-family:Consolas,"Bitstream Vera Sans Mono","Courier New",Courier,monospace; background:0px center; border:0px; bottom:auto; float:none; height:auto; left:auto; line-height:20px; margin:0px; outline:0px; overflow:visible; padding:0px; position:static; right:auto; top:auto; vertical-align:baseline; width:auto; min-height:inherit; font-weight:bold!important; color:rgb(51,102,153)!important">null ) addBean(_threadPool); } |
public void setThreadPool(ThreadPool threadPool) { if (_threadPool!= null ) removeBean(_threadPool); _container.update( this , _threadPool, threadPool, "threadpool" , false ); _threadPool = threadPool; if (_threadPool!= null ) addBean(_threadPool); } public void setThreadPool(ThreadPool threadPool)
{
if (_threadPool!= null )
rem oveBean(_threadPool);
_container.update( this , _threadPool, threadPool, "threadpool" , false );
_threadPool = threadPool;
if (_threadPool!= null )
addBean(_threadPool);
}
|
> |
|
"addConnect or" > class = "org.eclipse.jetty.server.nio.SelectChannelConnector" > "host" > "jetty.host" /> "port" > "jetty.port" default = "8080" /> "maxIdleTime" > 3000 "Acceptors" > 5 "statsOn" > false "lowResourcesConnections" > 5000 "lowResourcesMaxIdleTime" > 5000 "addConnector" >
class = "org.eclipse.jetty.server.nio.SelectChannelConnector" >
"host" >"jetty.host" />
"port" >"jetty.port" default = "8080" />
"maxIdleTime" > 3000
"Acceptors" > 5
"statsOn" > false
"lowResourcesConnections" > 5000
"lowResourcesMaxIdleTime" > 5000

