This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/tomcat.git
commit 488a31f5606ca4ca8472f1e181c6db804a02198d Author: Mark Thomas <ma...@apache.org> AuthorDate: Wed Apr 30 19:38:02 2025 +0100 Add synchronous processing --- webapps/docs/architecture/requestProcess.xml | 3 +- .../architecture/requestProcess/11_nio.plantuml | 4 + .../docs/architecture/requestProcess/11_nio.png | Bin 105158 -> 116516 bytes .../requestProcess/31_synchronous.plantuml | 109 +++++++++++++++++++++ .../architecture/requestProcess/31_synchronous.png | Bin 0 -> 209355 bytes 5 files changed, 115 insertions(+), 1 deletion(-) diff --git a/webapps/docs/architecture/requestProcess.xml b/webapps/docs/architecture/requestProcess.xml index 5b16e97559..2c8021daec 100644 --- a/webapps/docs/architecture/requestProcess.xml +++ b/webapps/docs/architecture/requestProcess.xml @@ -72,7 +72,8 @@ AJP - TBD. <section name="Servlet engine"> <p> -Synchronous - TBD +<a href="requestProcess/31_synchronous.png">Diagram 3.1</a> shows synchronous +Servlet requests are processed. </p> <p> Asynchronous - TBD. diff --git a/webapps/docs/architecture/requestProcess/11_nio.plantuml b/webapps/docs/architecture/requestProcess/11_nio.plantuml index 03608a5737..171171aef7 100644 --- a/webapps/docs/architecture/requestProcess/11_nio.plantuml +++ b/webapps/docs/architecture/requestProcess/11_nio.plantuml @@ -76,6 +76,10 @@ return SocketProcessor -> ConnectionHandler ++: process() ConnectionHandler -> Protocol ++: createProcessor() Protocol -->> Processor **: +activate Processor +Processor -->> CoyoteRequest **: +Processor -->> CoyoteResponse **: +return return ConnectionHandler -> Processor ++: process() Processor -> Processor ++: service() diff --git a/webapps/docs/architecture/requestProcess/11_nio.png b/webapps/docs/architecture/requestProcess/11_nio.png index 32cf126b80..058941858c 100644 Binary files a/webapps/docs/architecture/requestProcess/11_nio.png and b/webapps/docs/architecture/requestProcess/11_nio.png differ diff --git a/webapps/docs/architecture/requestProcess/31_synchronous.plantuml b/webapps/docs/architecture/requestProcess/31_synchronous.plantuml new file mode 100644 index 0000000000..645fd328f8 --- /dev/null +++ b/webapps/docs/architecture/requestProcess/31_synchronous.plantuml @@ -0,0 +1,109 @@ +@startuml + +' Licensed to the Apache Software Foundation (ASF) under one or more +' contributor license agreements. See the NOTICE file distributed with +' this work for additional information regarding copyright ownership. +' The ASF licenses this file to You under the Apache License, Version 2.0 +' (the "License"); you may not use this file except in compliance with +' the License. You may obtain a copy of the License at +' +' http://www.apache.org/licenses/LICENSE-2.0 +' +' Unless required by applicable law or agreed to in writing, software +' distributed under the License is distributed on an "AS IS" BASIS, +' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +' See the License for the specific language governing permissions and +' limitations under the License. + +hide footbox +skinparam style strictuml + +participant CoyoteRequest +participant CoyoteResponse +activate CoyoteAdapter + +CoyoteAdapter -> Connector ++: createRequest() +return + +CoyoteAdapter -> Connector ++: createResponse() +return + +CoyoteAdapter -> Request ++: setRequest() +return +CoyoteAdapter -> Response ++: setResponse() +return +CoyoteAdapter -> CoyoteRequest ++: setNote() +return +CoyoteAdapter -> CoyoteResponse ++: setNote() +return + +CoyoteAdapter -> CoyoteAdapter ++: postParseRequest() +return + +CoyoteAdapter -> Connector ++: getService() +return +CoyoteAdapter -> Service ++: getContainer() +return +CoyoteAdapter -> Engine ++: getPipeline() +return +CoyoteAdapter -> "StandardPipeline\n(Engine)" ++: getFirst() +return +CoyoteAdapter -> StandardEngineValve ++: invoke() +StandardEngineValve -> Request ++: getHost() +return +StandardEngineValve -> Host ++: getPipeline() +return +StandardEngineValve -> "StandardPipeline\n(Host)" ++: getFirst() +return +StandardEngineValve -> AccessLogValve ++: invoke() +AccessLogValve -> AccessLogValve ++: getNext() +return +AccessLogValve -> ErrorReportValve ++: invoke() +ErrorReportValve -> ErrorReportValve ++: getNext() +return +ErrorReportValve -> StandardHostValve ++: invoke() +StandardHostValve -> Request ++: getContext() +return +StandardHostValve -> Context ++: bind() +return +StandardHostValve -> Context ++: getPipeline() +return +StandardHostValve -> "StandardPipeline\n(Context)" ++: getFirst() +return +StandardHostValve -> StandardContextValve ++: invoke() +StandardContextValve -> Request ++: getWrapper() +return +StandardContextValve -> Wrapper ++: getPipeline() +return +StandardContextValve -> "StandardPipeline\n(Wrapper)" ++: getFirst() +return +StandardContextValve -> StandardWrapperValve ++: invoke() +StandardWrapperValve -> Wrapper ++: allocate() +return +StandardWrapperValve -> ApplicationFilterFactory ++: createFilterChain +ApplicationFilterFactory --> FilterChain **: +return +StandardWrapperValve -> FilterChain ++: doFilter() +FilterChain -> "Filter\nA" ++: doFilter() +"Filter\nA" -> FilterChain ++: doFilter() +FilterChain -> "Filter\nB" ++: doFilter() +"Filter\nB" -> FilterChain ++: doFilter() +FilterChain -> Servlet ++: service() +||| +return +return +return +return +return +return +StandardWrapperValve -> FilterChain ++: release() +return +StandardWrapperValve -> Wrapper ++: deallocate() +return +return +return +return +return +return +return +@enduml \ No newline at end of file diff --git a/webapps/docs/architecture/requestProcess/31_synchronous.png b/webapps/docs/architecture/requestProcess/31_synchronous.png new file mode 100644 index 0000000000..c91fc5024d Binary files /dev/null and b/webapps/docs/architecture/requestProcess/31_synchronous.png differ --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org