Tomcat5.0.28source的分析-多线程和Web应用加载
1.说明:
主要分析TomcatV5的多线程处理好部分的逻辑和Web应用的配置和接触以及加载的逻辑。全文分析着重于多线程的线程池的构造和Servlet的出来流程进行。
2.Multi-Thread Pool部分的逻辑
图1:线程逻辑的主要时序图。
(図1)
执行结果:
StandardService被CoyoteConnector进行初期化和启动操作后,处理使用的ThreadPool和ServerSocket也准备完成。然后可以从用户那里接受HttpRequest的请求来进行处理。
詳しい説明:
ア)CoyoteConnectorのinitialize。
そのメソッド中で関するオプジェクトがインスタンスされました。更に、PoolTcpEndPointオプジェクト中でPort=8080のServerSocketも作成しました。
イ)CoyoteConnectorのStart
そのメソッド中で、あるひまなThreadがTheadPoolから選出されます。このThreadはServerSocketからSocketをAcceptして、Http11Processerのprocessメソッドを実施します。最後にCoyoteAdapterを利用して、TomcatのPipeLine機能を呼び出して、色々なContainerがinvokeされました。
3.TomcatのPipeLineとValveのLogicを利用して、Servletを処理Logic
以上の2によって、CoyoteAdapterのserviceメソッド中のconnector.getContainer().invokeメソッドからTomcatのPipeLine機能を呼び出します。
この部分は前期調査しました。調査資料を参照してください。主なシーケンス図
「図2」と「図3」を表示します。
「図2」
最後にStandardContextValveはSerletをServiceするの特別な処理が始めます。その部分のLogic以下に説明しあす。StandardContextValveのInvoke処理Flow「図3」
StandardContextVaveがユーザが呼び出すServlet対応StandardWrappreを呼び出す。それに、ServletのFilter機能を利用して、Serveltを実行します。
「図3」