Re: 5.next + 4.1.x future
David Rees wrote: On Fri, December 12, 2003 at 2:12 pm, Adam Fisk wrote: I'd be happy to send my data to the group if people are interested. Aside from memory, I was surprised to find that the effect on CPU was negligible (not much of a benefit from no context-switching between threads) -- CPU was virtually the same in both cases. So, the scaling benefits on Windows basically come from not having to allocate more memory to new threads. I'm unfortunately not as familiar with the Tomcat code as I'd like to be, but I assume it makes intelligent use of thread pooling, which may even the memory benefits of NIO negligible. At the same time, though, NIO may remove some of the constraints introduced by thread pooling, possibly allowing Tomcat to handle heavier loads without blowing up. An optimized NIO server would if anything out-perform a blocking server, but maybe by not that much. On current Linux systems, once you start getting 500+ processes/threads active on a typical machine, you will find that context switching starts taking up a significant amount of system time, especially if you decide to run any system moniting tools (like ps, or top). This is better with the upcoming 2.6 kernels, but still doesn't scale to thousands of active threads very well. For purely switching, the benches I saw saw a linear scaling for the amount on processes in Linnux 2.6. I didn't try it, though. There would be a significant amount of threads in wait mode. You can't have thousands of threads actually processing stuff anyway, you'll have problems with your database first, or your CPU in the case of XML. I really wonder sometimes why some people think that NIO would make J2EE scale automagically. It could be a decent optimization for resources use (memory and some threads), but that's it, and it remains to be seen if it wouldn't cause a throughtput drop (in that case, it would be useless, given the amount of memory efficient VMs use to provide a similar throughtput increase). However, given that you need a thread anyway to server any dynamic content, I don't see NIO helping that much for your typical web application. I could see NIO helping scale the serving of static content which would be useful where people are using Tomcat standalone. Maybe someone can prove me wrong. ;-) Static content is handled with a regular (well, almost) servlet, and all those requests have to go through the filter pipeline (ie, user components). This is the exact same problem when having Apache serve static files. Nice try ;-) Rémy - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
"in the ClassLoader sense" on MBean manual
To all committers, I'd like to ask a question about Tomcat5 manual while I'm translating it into Japanese. (We have been translating all TC5 manuals into Japanese.) In the part of,"Including your own mbean-descriptor files" clause on "MBean Descriptor How To" page: http://jakarta.apache.org/tomcat/tomcat-5.0-doc/mbeans-descriptor-howto.html You may configure custom components (e.g. Valves/Realms) by including your own mbean-descriptor file(s), and setting the "descriptors" attribute to point to a ';' separated list of paths (in the ClassLoader sense) of files to add to the default list under ServerLifecycleListener definition in server.xml. I couldn't get the meaning of the phrase,"(in the ClassLoader sense)". Does it mean, "like in the ClassLoader"? Would someone please tell me in another words? Regards. -- TANAKA Yoshihiro / http://www.ytp.ne.jp/ --- - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: "in the ClassLoader sense" on MBean manual
TANAKA Yoshihiro wrote: To all committers, I'd like to ask a question about Tomcat5 manual while I'm translating it into Japanese. (We have been translating all TC5 manuals into Japanese.) In the part of,"Including your own mbean-descriptor files" clause on "MBean Descriptor How To" page: http://jakarta.apache.org/tomcat/tomcat-5.0-doc/mbeans-descriptor-howto.html You may configure custom components (e.g. Valves/Realms) by including your own mbean-descriptor file(s), and setting the "descriptors" attribute to point to a ';' separated list of paths (in the ClassLoader sense) of files to add to the default list under ServerLifecycleListener definition in server.xml. I couldn't get the meaning of the phrase,"(in the ClassLoader sense)". Does it mean, "like in the ClassLoader"? Would someone please tell me in another words? Yes, in the CL sense. It's no longer useful with modeler 1.1, however: modeler will try to load a mbeans-descriptors.xml resource from the same package as your class, and then if not found there look into the "core" descriptor file (which are specified using the list you mention). Rémy - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: "in the ClassLoader sense" on MBean manual
on Sat, 13 Dec 2003 15:20:43 +0100 Remy Maucherat <[EMAIL PROTECTED]> wrote: Got it! Thanks a lot. >Yes, in the CL sense. >It's no longer useful with modeler 1.1, however: modeler will try to >load a mbeans-descriptors.xml resource from the same package as your >class, and then if not found there look into the "core" descriptor file >(which are specified using the list you mention). > >Rémy -- TANAKA Yoshihiro / http://www.ytp.ne.jp/ --- - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
"in the ClassLoader sense" on MBean manual
To all committers, I'd like to ask a question about Tomcat5 manual while I'm translating it into Japanese. (We have been translating all TC5 manuals into Japanese.) In the part of,"Including your own mbean-descriptor files" clause on "MBean Descriptor How To" page: http://jakarta.apache.org/tomcat/tomcat-5.0-doc/mbeans-descriptor-howto.html You may configure custom components (e.g. Valves/Realms) by including your own mbean-descriptor file(s), and setting the "descriptors" attribute to point to a ';' separated list of paths (in the ClassLoader sense) of files to add to the default list under ServerLifecycleListener definition in server.xml. I couldn't get the meaning of the phrase,"(in the ClassLoader sense)". Does it mean, "like in the ClassLoader"? Would someone please tell me in another words? Regards. -- TANAKA Yoshihiro / http://www.ytp.ne.jp/ --- - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: jakarta-tomcat-catalina/webapps/docs/architecture - New directory
yoavs 2003/12/13 08:58:49 jakarta-tomcat-catalina/webapps/docs/architecture - New directory - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: jakarta-tomcat-catalina/webapps/docs/architecture/requestProcess - New directory
yoavs 2003/12/13 09:17:58 jakarta-tomcat-catalina/webapps/docs/architecture/requestProcess - New directory - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: jakarta-tomcat-catalina/webapps/docs/architecture/startup - New directory
yoavs 2003/12/13 09:17:58 jakarta-tomcat-catalina/webapps/docs/architecture/startup - New directory - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: jakarta-tomcat-catalina/webapps/docs/architecture/startup serverStartup.pdf serverStartup.txt
yoavs 2003/12/13 09:18:57 Added: webapps/docs/architecture index.xml index.xml~ project.xml project.xml~ requestProcess.xml startup.xml webapps/docs/architecture/requestProcess requestProcess.pdf roseModel.mdl webapps/docs/architecture/startup serverStartup.pdf serverStartup.txt Log: Architecture documents first draft. Revision ChangesPath 1.1 jakarta-tomcat-catalina/webapps/docs/architecture/index.xml http://cvs.apache.org/viewcvs/jakarta-tomcat-catalina/webapps/docs/architecture/index.xml?rev=1.1 1.1 jakarta-tomcat-catalina/webapps/docs/architecture/index.xml~ <> 1.1 jakarta-tomcat-catalina/webapps/docs/architecture/project.xml http://cvs.apache.org/viewcvs/jakarta-tomcat-catalina/webapps/docs/architecture/project.xml?rev=1.1 1.1 jakarta-tomcat-catalina/webapps/docs/architecture/project.xml~ <> 1.1 jakarta-tomcat-catalina/webapps/docs/architecture/requestProcess.xml http://cvs.apache.org/viewcvs/jakarta-tomcat-catalina/webapps/docs/architecture/requestProcess.xml?rev=1.1 1.1 jakarta-tomcat-catalina/webapps/docs/architecture/startup.xml http://cvs.apache.org/viewcvs/jakarta-tomcat-catalina/webapps/docs/architecture/startup.xml?rev=1.1 1.1 jakarta-tomcat-catalina/webapps/docs/architecture/requestProcess/requestProcess.pdf <> 1.1 jakarta-tomcat-catalina/webapps/docs/architecture/requestProcess/roseModel.mdl http://cvs.apache.org/viewcvs/jakarta-tomcat-catalina/webapps/docs/architecture/requestProcess/roseModel.mdl?rev=1.1 1.1 jakarta-tomcat-catalina/webapps/docs/architecture/startup/serverStartup.pdf <> 1.1 jakarta-tomcat-catalina/webapps/docs/architecture/startup/serverStartup.txt http://cvs.apache.org/viewcvs/jakarta-tomcat-catalina/webapps/docs/architecture/startup/serverStartup.txt?rev=1.1 - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: jakarta-tomcat-catalina/webapps/docs index.xml project.xml
yoavs 2003/12/13 09:21:21 Modified:webapps/docs index.xml project.xml Log: Added links to architecture Revision ChangesPath 1.13 +3 -0 jakarta-tomcat-catalina/webapps/docs/index.xml Index: index.xml === RCS file: /home/cvs/jakarta-tomcat-catalina/webapps/docs/index.xml,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- index.xml 25 Nov 2003 18:24:09 - 1.12 +++ index.xml 13 Dec 2003 17:21:21 - 1.13 @@ -154,6 +154,9 @@ Jasper Javadocs - Javadoc API documentation for the Jasper JSP container portion of Tomcat 5. +Tomcat Architecture +- Documentation of the Tomcat Server Architecture. + 1.19 +1 -0 jakarta-tomcat-catalina/webapps/docs/project.xml Index: project.xml === RCS file: /home/cvs/jakarta-tomcat-catalina/webapps/docs/project.xml,v retrieving revision 1.18 retrieving revision 1.19 diff -u -r1.18 -r1.19 --- project.xml 29 Nov 2003 22:11:22 - 1.18 +++ project.xml 13 Dec 2003 17:21:21 - 1.19 @@ -57,6 +57,7 @@ + - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: jakarta-tomcat-catalina/webapps/docs/architecture project.xml
yoavs 2003/12/13 09:21:52 Modified:webapps/docs/architecture project.xml Log: Corrected XML Revision ChangesPath 1.2 +5 -5 jakarta-tomcat-catalina/webapps/docs/architecture/project.xml Index: project.xml === RCS file: /home/cvs/jakarta-tomcat-catalina/webapps/docs/architecture/project.xml,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- project.xml 13 Dec 2003 17:18:57 - 1.1 +++ project.xml 13 Dec 2003 17:21:52 - 1.2 @@ -12,14 +12,14 @@ - + - - - - + + + + - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: jakarta-tomcat-catalina/webapps/docs/architecture overview.xml
yoavs 2003/12/13 09:51:53 Added: webapps/docs/architecture overview.xml Log: Added overview first draft. Revision ChangesPath 1.1 jakarta-tomcat-catalina/webapps/docs/architecture/overview.xml Index: overview.xml === ]> &project; Yoav Shapira Architecture Overview/title> This page provides an overview of the Tomcat server architecture. In the Tomcat world, a Server represents the whole container. Tomcat provides a default implementation of the Server interface., and this is rarely customized by users. A Service is an intermediate component which lives inside a Server and ties one or more Connectors to exactly one Engine. The Service element is rarely customized by users, as the default implementation is simple and sufficient: Service interface. An Engine represents request processing pipeline for a specific Service. As a Service may have multiple Connectors, the Engine received and processes all requests from these connectors, handing the response back to the appropriate connector for transmission to the client. The Engine interface may be implemented to supply custom Engines, though this is uncommon. Note that the Engine may be used for Tomcat server clustering via the jvmRoute parameter. Read the Clustering documentation for more information. A Host is an association of a network name, e.g. www.yourcompany.com, to the Tomcat server. An Engine may contain multiple hosts, and the Host element also supports network aliases such as yourcompany.com and abc.yourcompany.com. Users rarely create custom Hosts because the StandardHost implementation provides significant additional functionality. A Connector handles communications with the client. There are multiple connectors available with Tomcat, all of which implement the Connector interface. These include the Coyote connector which is used for most HTTP traffic, especially when running Tomcat as a standalone server, and the JK2 connector which implements the AJP procotol used when connecting Tomcat to an Apache HTTPD server. Creating a customized connector is a significant effort. A Context represents a web application. A Host may contain multiple contexts, each with a unique path. The Context interface may be implemented to create custom Contexts, but this is rarely the case because the StandardContext provides significant additional functionality. Tomcat is designed to be a fast and efficient implementation of the Servlet Specification. Tomcat came about as the reference implementation of this specification, and has remained rigorous in adhering to the specification. At the same time, significant attention has been paid to Tomcat's performance and it is now on par with other servlet containers, including commercial ones. In recent releases of Tomcat, mostly starting with Tomcat 5, we have begun effots to make more aspects of Tomcat managable via JMX. In addition, the Manager and Admin webapps have been greatly enhanced and improved. Managability is a primary area of concern for us as the product matures and the specification becomes more stable. - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: cvs commit: jakarta-tomcat-catalina/webapps/docs/architecture/startup serverStartup.pdf serverStartup.txt
Can project.xml~ and index.xml~ be removed? They look like [editor] backup files. (I might be early on this one) Is an update also coming for j-t-catalina/webapps/docs/build.xml? The architecture dir isn't being picked up on build. Is there any opinion on mixed case file names for documentation? (All the docs files are currently lower cased and use hyphens to seperate words) -Tim [EMAIL PROTECTED] wrote: yoavs 2003/12/13 09:18:57 Added: webapps/docs/architecture index.xml index.xml~ project.xml project.xml~ requestProcess.xml startup.xml webapps/docs/architecture/requestProcess requestProcess.pdf roseModel.mdl webapps/docs/architecture/startup serverStartup.pdf serverStartup.txt Log: Architecture documents first draft. - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: jakarta-tomcat-catalina/webapps/docs/architecture index.xml~ project.xml~
remm2003/12/13 12:55:26 Removed: webapps/docs/architecture index.xml~ project.xml~ Log: - Remove Xemacs backups. - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/servlets CGIServlet.java
markt 2003/12/13 14:49:30 Modified:catalina/src/share/org/apache/catalina/servlets CGIServlet.java Log: - Fix for bug 5759. CGI servlet does not support extension mapping. - This patch needs review. Revision ChangesPath 1.10 +13 -8 jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/servlets/CGIServlet.java Index: CGIServlet.java === RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/servlets/CGIServlet.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- CGIServlet.java 12 Dec 2003 22:50:57 - 1.9 +++ CGIServlet.java 13 Dec 2003 22:49:30 - 1.10 @@ -794,8 +794,13 @@ */ protected void setupFromRequest(HttpServletRequest req) { this.contextPath = req.getContextPath(); -this.pathInfo = req.getPathInfo(); this.servletPath = req.getServletPath(); +this.pathInfo = req.getPathInfo(); +// If getPathInfo() returns null, must be using extension mapping +// In this case, pathInfo should be same as servletPath +if (this.pathInfo == null) { +this.pathInfo = this.servletPath; +} } - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]