A Connector is a component responsible receiving requests from, and returning responses to, a client application. A Connector performs the following general logic:
- Receive a request from the client application.
- Create (or allocate from a pool) appropriate Request and Response instances, and populate their properties based on the contents of the received request, as described below.
- For all Requests, the
connector,protocol,remoteAddr,response,scheme,secure,serverName,serverPortandstreamproperties MUST be set. ThecontentLengthandcontentTypeproperties are also generally set. - For HttpRequests, the
method,queryString,requestedSessionCookie,requestedSessionId,requestedSessionURL,requestURI, andsecureproperties MUST be set. In addition, the variousaddXxxmethods must be called to record the presence of cookies, headers, and locales in the original request. - For all Responses, the
connector,request, andstreamproperties MUST be set. - No additional headers must be set by the Connector for HttpResponses.
- For all Requests, the
- Identify an appropriate Container to use for processing this request. For a stand alone Catalina installation, this will probably be a (singleton) Engine implementation. For a Connector attaching Catalina to a web server such as Apache, this step could take advantage of parsing already performed within the web server to identify the Context, and perhaps even the Wrapper, to utilize in satisfying this Request.
- Call the
invoke()method of the selected Container, passing the initialized Request and Response instances as arguments. - Return any response created by the Container to the client, or return an appropriate error message if an exception of any type was thrown.
- If utilizing a pool of Request and Response objects, recycle the pair of instances that was just used.
博客介绍了处理客户端请求的流程,包括接收请求、创建并设置Request和Response实例的属性,针对不同类型请求设置特定属性,识别合适的容器处理请求,调用容器方法,返回响应或错误信息,若使用对象池则回收实例。
1039

被折叠的 条评论
为什么被折叠?



