﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-冉翔的技术专栏-文章分类-05.Web/App Server</title><link>http://www.blogjava.net/ranxiang/category/4385.html</link><description>关注于J2SE，J2EE以及开源方面的技术。</description><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 22:38:56 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 22:38:56 GMT</pubDate><ttl>60</ttl><item><title>Apache与Tomcat的整合【mod_jk篇】</title><link>http://www.blogjava.net/ranxiang/articles/23144.html</link><dc:creator>冉翔</dc:creator><author>冉翔</author><pubDate>Fri, 09 Dec 2005 07:19:00 GMT</pubDate><guid>http://www.blogjava.net/ranxiang/articles/23144.html</guid><wfw:comment>http://www.blogjava.net/ranxiang/comments/23144.html</wfw:comment><comments>http://www.blogjava.net/ranxiang/articles/23144.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ranxiang/comments/commentRss/23144.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ranxiang/services/trackbacks/23144.html</trackback:ping><description><![CDATA[<p class="MsoNormal"><span lang="EN-US">Apache</span><span style="font-family: 宋体;">与</span><span lang="EN-US">Tomcat</span><span style="font-family: 宋体;">的整合</span></p>


<p class="MsoNormal"><span style="font-family: 宋体;">作者：冉翔</span></p>


<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>


<p class="MsoNormal"><span style="font-family: 宋体;">环境：</span></p>


<p class="MsoNormal"><span lang="EN-US">windows2003</span></p>


<p class="MsoNormal"><span lang="EN-US">jdk1.5</span></p>


<p class="MsoNormal"><span lang="EN-US">Apache <st1:chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">2.0.53</st1:chsdate></span></p>


<p class="MsoNormal"><span lang="EN-US">tomcat<st1:chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">5.5.9</st1:chsdate></span></p>


<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>


<p class="MsoNormal"><span style="font-family: 宋体;">相关软件下载地址：</span></p>


<p class="MsoNormal"><span lang="EN-US">apache <st1:chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">2.0.53</st1:chsdate></span><span style="font-family: 宋体;">：</span></p>


<p class="MsoNormal"><span lang="EN-US"><a href="http://archive.apache.org/dist/httpd/binaries/win32/">http://archive.apache.org/dist/httpd/binaries/win32/</a></span></p>


<p class="MsoNormal"><span lang="EN-US">tomcat<st1:chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">5.5.9</st1:chsdate></span><span style="font-family: 宋体;">：</span></p>


<p class="MsoNormal"><span lang="EN-US"><a href="http://archive.apache.org/dist/jakarta/tomcat-5/v5.5.9/bin/jakarta-tomcat-5.5.9.zip">http://archive.apache.org/dist/jakarta/tomcat-5/v5.5.9/bin/jakarta-tomcat-5.5.9.zip</a></span></p>


<p class="MsoNormal"><span lang="EN-US">jdk1.5</span><span style="font-family: 宋体;">：</span></p>


<p class="MsoNormal"><span lang="EN-US"><a href="http://java.sun.com/j2se/1.5.0/download.jsp">http://java.sun.com/j2se/1.5.0/download.jsp</a></span></p>


<p class="MsoNormal"><span lang="EN-US">mod_jk-<st1:chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">1.2.12</st1:chsdate>-apache-2.0.54.so</span><span style="font-family: 宋体;">：</span></p>


<p class="MsoNormal"><span lang="EN-US"><a href="http://www.apache.org/dist/jakarta/tomcat-connectors/jk/binaries/win32/jk-1.2.12/mod_jk-1.2.12-apache-2.0.54.so">http://www.apache.org/dist/jakarta/tomcat-connectors/jk/binaries/win32/jk-1.2.12/mod_jk-1.2.12-apache-2.0.54.so</a></span></p>


<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>


<p class="MsoNormal"><span style="font-family: 宋体;">步骤，</span></p>


<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>


<p class="MsoNormal"><span style="font-family: 宋体;">前戏：先在</span><span lang="EN-US">D:/Java/tomcat/webapps/</span><span style="font-family: 宋体;">下面建立一个文件夹</span><span lang="EN-US">test</span><span style="font-family: 宋体;">。</span></p>


<p class="MsoNormal"><span style="font-family: 宋体;">里面放上一个</span><span lang="EN-US">jsp</span><span style="font-family: 宋体;">和</span><span lang="EN-US">html</span><span style="font-family: 宋体;">文件，叫做</span><span lang="EN-US">index.jsp</span><span style="font-family: 宋体;">和</span><span lang="EN-US">test.html</span><span style="font-family: 宋体;">好了：）</span></p>


<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>


<p class="MsoNormal"><span style="font-family: 宋体;">首先，将</span><span lang="EN-US">mod_jk-<st1:chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">1.2.12</st1:chsdate>-apache-2.0.54.so</span></p>


<p class="MsoNormal"><span style="font-family: 宋体;">放入</span><span lang="EN-US">apache/modules</span><span style="font-family: 宋体;">文件夹下面。</span></p>


<p class="MsoNormal"><span style="font-family: 宋体;">然后在</span><span lang="EN-US">apache/conf</span><span style="font-family: 宋体;">文件夹下，新建文件</span><span lang="EN-US">workers.properties</span></p>


<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>


<p class="MsoNormal"><span style="font-family: 宋体;">内容如下：</span></p>


<p class="MsoNormal"><span lang="EN-US"># </span><span style="font-family: 宋体;">这现行根据安装目录做修改</span><span lang="EN-US"><o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US">workers.tomcat_home=D:/Java/tomcat<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US">workers.java_home=C:/jdk1.5<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US">ps=\<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US"># worker.list=ajp13<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US">worker.list=ajp12,ajp13 <o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>


<p class="MsoNormal"><span lang="EN-US">worker.ajp12.port=8007<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US">worker.ajp12.host=localhost<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US">worker.ajp12.type=ajp12<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US">worker.ajp12.lbfactor=1<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US">worker.ajp13.port=8009<span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US">worker.ajp13.host=localhost<span style="">&nbsp;&nbsp;&nbsp;&nbsp; </span><o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US">worker.ajp13.type=ajp13<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US">worker.ajp13.lbfactor=1<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>


<p class="MsoNormal"><span lang="EN-US">worker.loadbalancer.type=lb<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>


<p class="MsoNormal"><span lang="EN-US">worker.loadbalancer.balanced_workers=ajp12,
ajp13<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US">worker.inprocess.type=jni<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US">worker.inprocess.class_path=$(workers.tomcat_home)$(ps)classes<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US">worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)jaxp.jar<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>


<p class="MsoNormal"><span lang="EN-US">worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)parser.jar<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>


<p class="MsoNormal"><span lang="EN-US">worker.inprocess.class_path=$(workers.tomcat_home)$(ps)common$(ps)lib$(ps)jasper.jar<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>


<p class="MsoNormal"><span lang="EN-US">worker.inprocess.class_path=$(workers.tomcat_home)$(ps)common$(ps)lib$(ps)servlet.jar<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>


<p class="MsoNormal"><span lang="EN-US">worker.inprocess.class_path=$(workers.tomcat_home)$(ps)common$(ps)lib$(ps)webserver.jar<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>


<p class="MsoNormal"><span lang="EN-US">worker.inprocess.class_path=$(workers.java_home)$(ps)lib$(ps)tools.jar<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>


<p class="MsoNormal"><span lang="EN-US">worker.inprocess.cmd_line=-config<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>


<p class="MsoNormal"><span lang="EN-US">worker.inprocess.cmd_line=$(workers.tomcat_home)/conf/jni_server.xml<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>


<p class="MsoNormal"><span lang="EN-US">worker.inprocess.cmd_line=-home<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>


<p class="MsoNormal"><span lang="EN-US">worker.inprocess.cmd_line=$(workers.tomcat_home)<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>


<p class="MsoNormal"><span lang="EN-US">worker.inprocess.jvm_lib=$(workers.java_home)$(ps)jre$(ps)bin$(ps)classic$(ps)jvm.dll<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>


<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>


<p class="MsoNormal"><span lang="EN-US">worker.inprocess.stdout=$(workers.tomcat_home)$(ps)inprocess.stdout<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>


<p class="MsoNormal"><span lang="EN-US">worker.inprocess.stderr=$(workers.tomcat_home)$(ps)inprocess.stderr<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>


<p class="MsoNormal"><span lang="EN-US">worker.inprocess.sysprops=tomcat.home=$(workers.tomcat_home)</span></p>


<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>


<p class="MsoNormal"><span style="font-family: 宋体;">编辑</span><span lang="EN-US">apache/conf</span><span style="font-family: 宋体;">文件夹内的</span><span lang="EN-US">httpd.conf</span></p>


<p class="MsoNormal"><span style="font-family: 宋体;">添加如下字段：</span></p>


<p class="MsoNormal"><span lang="EN-US">#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~</span></p>


<p class="MsoNormal"><span lang="EN-US">LoadModule jk_module modules/mod_jk-<st1:chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">1.2.12</st1:chsdate>-apache-2.0.54.so</span></p>


<p class="MsoNormal"><span lang="EN-US">#</span><span style="font-family: 宋体;">禁止访问</span><span lang="EN-US">WEB_INF</span><span style="font-family: 宋体;">和</span><span lang="EN-US">META_INF</span><span style="font-family: 宋体;">目录。</span><span lang="EN-US"><o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;</span>&lt;Directory ~ "/WEB-INF/"&gt; <o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;
</span>Order allow,deny <o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;
</span>Deny from all <o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;
</span>&lt;/Directory&gt;<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;
</span>&lt;Directory ~ "/META-INF/"&gt; <o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;
</span>Order allow,deny <o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;
</span>Deny from all <o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;
</span>&lt;/Directory&gt;<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>


<p class="MsoNormal"><span lang="EN-US">#</span><span style="font-family: 宋体;">添加映射，使可以使用</span><span lang="EN-US"><a href="http://localhost/test/">http://localhost/test/</a></span><span style="font-family: 宋体;">来访问</span><span lang="EN-US"><o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US">Alias /test/ "D:/Java/tomcat/webapps/test/"<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;
</span>&lt;Directory "D:/Java/tomcat/webapps/test/"&gt;<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Options Indexes MultiViews<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>AllowOverride None<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Order allow,deny<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Allow from all<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>DirectoryIndex index.jsp<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;
</span>&lt;/Directory&gt;<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US">#</span><span style="font-family: 宋体;">添加映射，使可以使用</span><span lang="EN-US">http://localhost/test</span><span style="font-family: 宋体;">来访问，注意最后没有那个</span><span lang="EN-US">/<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US">Alias /test "D:/Java/tomcat/webapps/test/"<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;
</span>&lt;Directory "D:/Java/tomcat/webapps/test/"&gt;<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Options Indexes MultiViews<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>AllowOverride None<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Order allow,deny<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Allow from all<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>DirectoryIndex index.jsp<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;
</span>&lt;/Directory&gt;<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>


<p class="MsoNormal"><span lang="EN-US">#</span><span style="font-family: 宋体;">加载配置文件</span><span lang="EN-US"><o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US">JkWorkersFile
"D:/Java/xampp/apache/conf/workers.properties"</span></p>


<p class="MsoNormal"><span lang="EN-US">#</span><span style="font-family: 宋体;">对</span><span lang="EN-US">URL</span><span style="font-family: 宋体;">进行规则匹配</span><span lang="EN-US"><o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US">JkMount /test/ ajp13<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US">JkMount /test/servlet/* ajp13<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US">JkMount /test/*.jsp ajp13<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US">JkMount /test/*.do ajp13<o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US">#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~</span></p>


<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>


<p class="MsoNormal"><span style="font-family: 宋体;">查看</span><span lang="EN-US">tomcat/conf/</span><span style="font-family: 宋体;">下的</span><span lang="EN-US">server.xml</span></p>


<p class="MsoNormal"><span style="font-family: 宋体;">添加如下字段，当然如果已经有了就不用添加了，或者有注释，去掉就可以了。</span></p>


<p class="MsoNormal"><span lang="EN-US">&lt;Connector port="8009" <o:p></o:p></span></p>


<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>enableLookups="false"
redirectPort="8443" protocol="AJP/1.3"
URIEncoding="GBK" /&gt;</span></p>


<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>


<p class="MsoNormal"><span style="font-family: 宋体;">至此启动</span><span lang="EN-US">tomcat</span><span style="font-family: 宋体;">，启动</span><span lang="EN-US">apache</span><span style="font-family: 宋体;">。</span></p>


<p class="MsoNormal"><span style="font-family: 宋体;">访问</span></p>


<p class="MsoNormal"><span lang="EN-US"><a href="http://localhost/">http://localhost</a></span><span style="font-family: 宋体;">，出现</span><span lang="EN-US">apache</span><span style="font-family: 宋体;">欢迎界面</span></p>


<p class="MsoNormal"><span lang="EN-US"><a href="http://localhost:8080/">http://localhost:8080</a></span><span style="font-family: 宋体;">，出现</span><span lang="EN-US">tomcat</span><span style="font-family: 宋体;">欢迎界面</span></p>


<p class="MsoNormal"><span lang="EN-US"><a href="http://localhost:8080/waityou">http://localhost:8080/waityou</a></span><span style="font-family: 宋体;">，出现</span><span lang="EN-US">index.jsp</span><span style="font-family: 宋体;">的页面，去掉</span><span lang="EN-US">:8080</span><span style="font-family: 宋体;">，正常。</span></p>


<p class="MsoNormal"><span lang="EN-US"><a href="http://lcaolhost:8080/waityou/test.html">http://lcaolhost:8080/waityou/test.html</a></span><span style="font-family: 宋体;">，出现</span><span lang="EN-US">test.html</span><span style="font-family: 宋体;">的页面，去掉</span><span lang="EN-US">8080</span><span style="font-family: 宋体;">，正常。</span></p>


<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>


<p class="MsoNormal"><span style="font-family: 宋体;">阅读材料：</span></p>


<p class="MsoNormal"><span lang="EN-US"><a href="http://community.csdn.net/Expert/topic/3902/3902301.xml?temp=.441662%20">http://community.csdn.net/Expert/topic/3902/3902301.xml?temp=.441662
</a></span></p>


<p class="MsoNormal"><span lang="EN-US"><a href="http://jakarta.apache.org/tomcat/connectors-doc/">http://jakarta.apache.org/tomcat/connectors-doc/</a></span></p>


<p class="MsoNormal"><span style="font-family: 宋体;">《</span><span lang="EN-US">Tomcat</span><span style="font-family: 宋体;">权威指南》英文版</span></p>


<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>


<p class="MsoNormal"><span style="font-family: 宋体;">感谢：</span><span lang="EN-US">PIGO</span><span style="font-family: 宋体;">。在</span><span lang="EN-US">QQ</span><span style="font-family: 宋体;">上对我进行热心的讲解和辅导。解除了我的很多疑问。教会了我很多东西。</span></p>
<img src ="http://www.blogjava.net/ranxiang/aggbug/23144.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ranxiang/" target="_blank">冉翔</a> 2005-12-09 15:19 <a href="http://www.blogjava.net/ranxiang/articles/23144.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转载】tomcat的server.xml（中文版）</title><link>http://www.blogjava.net/ranxiang/articles/23145.html</link><dc:creator>冉翔</dc:creator><author>冉翔</author><pubDate>Fri, 09 Dec 2005 07:19:00 GMT</pubDate><guid>http://www.blogjava.net/ranxiang/articles/23145.html</guid><wfw:comment>http://www.blogjava.net/ranxiang/comments/23145.html</wfw:comment><comments>http://www.blogjava.net/ranxiang/articles/23145.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ranxiang/comments/commentRss/23145.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ranxiang/services/trackbacks/23145.html</trackback:ping><description><![CDATA[
		&lt;!-- Example Server Configuration File --&gt;<br>
&lt;!-- Tomcat服务器配置示例文件 --&gt;<br>
<br>
&lt;!-- Note that component elements are nested corresponding to their<br>
&nbsp;&nbsp;&nbsp;&nbsp; parent-child relationships with each other --&gt;<br>
&lt;!-- 注意，这些组件的构成是根据相互之间的父子关系进行嵌套的。--&gt;<br>
<br>
&lt;!-- A "Server" is a singleton element that represents the entire JVM,<br>
&nbsp;&nbsp;&nbsp;&nbsp; which may contain one or more "Service" instances. The Server<br>
&nbsp;&nbsp;&nbsp;&nbsp; listens for a shutdown command on the indicated port.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp; Note: A "Server" is not itself a "Container", so you may not<br>
&nbsp;&nbsp;&nbsp;&nbsp; define subcomponents such as "Valves" or "Loggers" at this level.<br>
&nbsp;--&gt;<br>
&lt;!-- 一个“Server”是一个提供完整的JVM的独立组件，它可以包含一个或多个<br>
&nbsp;&nbsp;&nbsp;&nbsp; “Service”实例。服务器在指定的端口上监听shutdown命令。<br>
&nbsp;&nbsp;&nbsp; &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp; 注意：一个“Server”自身不是一个“Container”（容器），因此在这里你<br>
&nbsp;&nbsp;&nbsp;&nbsp; 不可以定义诸如“Valves”或者“Loggers”子组件<br>
--&gt;<br>
<br>
&lt;Server port="8005" shutdown="SHUTDOWN" debug="0"&gt;<br>
<br>
<br>
&nbsp; &lt;!-- Comment these entries out to disable JMX MBeans support --&gt;<br>
&nbsp; &lt;!-- 这些指令组件关闭JMX MBeans支持 --&gt;<br>
&nbsp; <br>
&nbsp; &lt;!-- You may also configure custom components (e.g. Valves/Realms) by<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; including your own mbean-descriptor file(s), and setting the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "descriptors" attribute to point to a ';' seperated list of paths<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (in the ClassLoader sense) of files to add to the default list.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.g. descriptors="/com/myfirm/mypackage/mbean-descriptor.xml"<br>
&nbsp; --&gt;<br>
&nbsp; &lt;!-- 你也可以通过包含你自己的mbean描述文件配置自定义的组件，然后设置<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; “descriptors”属性为以“；”为分隔的文件名列表严将它添加到默认列表<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 中，例如：descriptors="/com/myfirm/mypackage/mbean-descriptor.xml"。<br>
&nbsp;--&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br>
&nbsp; &lt;Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; debug="0"/&gt;<br>
&nbsp; &lt;Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; debug="0"/&gt;<br>
<br>
&nbsp; &lt;!-- Global JNDI resources --&gt;<br>
&nbsp; &lt;!-- 全局JNDI资源 --&gt;<br>
&nbsp; &lt;GlobalNamingResources&gt;<br>
<br>
&nbsp;&nbsp;&nbsp; &lt;!-- Test entry for demonstration purposes --&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;!-- 出于示例目的的测试入口 --&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;Environment name="simpleValue" type="java.lang.Integer" value="30"/&gt;<br>
<br>
&nbsp;&nbsp;&nbsp; &lt;!-- Editable user database that can also be used by<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UserDatabaseRealm to authenticate users --&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;!-- 可编辑的，用来通过UserDatabaseRealm认证用户的用户数据库 --&gt;<br>
&nbsp;&nbsp; &nbsp;<br>
&nbsp;&nbsp;&nbsp; &lt;Resource name="UserDatabase" auth="Container"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type="org.apache.catalina.UserDatabase"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; description="User database that can be updated and saved"&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;/Resource&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;ResourceParams name="UserDatabase"&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;parameter&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;factory&lt;/name&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;org.apache.catalina.users.MemoryUserDatabaseFactory&lt;/value&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/parameter&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;parameter&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;pathname&lt;/name&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;conf/tomcat-users.xml&lt;/value&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/parameter&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;/ResourceParams&gt;<br>
<br>
&nbsp; &lt;/GlobalNamingResources&gt;<br>
<br>
&nbsp; &lt;!-- A "Service" is a collection of one or more "Connectors" that share<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a single "Container" (and therefore the web applications visible<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; within that Container). Normally, that Container is an "Engine",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; but this is not required.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Note: A "Service" is not itself a "Container", so you may not<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; define subcomponents such as "Valves" or "Loggers" at this level.<br>
&nbsp;&nbsp; --&gt;<br>
&nbsp; &lt;!-- 一个“Service”是一个或多个共用一个单独“Container”(容器)的“Connectors”<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 组合（因此，应用程序在容器中可见）。通常，这个容器是一个“Engine”<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; （引擎），但这不是必须的。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 注意：一个“Service”自身不是一个容器，因此，在这个级别上你不可定义<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 诸如“Valves”或“Loggers”子组件。<br>
&nbsp; --&gt;<br>
<br>
&nbsp; &lt;!-- Define the Tomcat Stand-Alone Service --&gt;<br>
&nbsp; &lt;!-- 定义Tomcat的标准独立服务 --&gt;<br>
&nbsp; &lt;Service name="Catalina"&gt;<br>
<br>
&nbsp;&nbsp;&nbsp; &lt;!-- A "Connector" represents an endpoint by which requests are received<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and responses are returned. Each Connector passes requests on to the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; associated "Container" (normally an Engine) for processing.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; By default, a non-SSL HTTP/1.1 Connector is established on port 8080.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; You can also enable an SSL HTTP/1.1 Connector on port 8443 by<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; following the instructions below and uncommenting the second Connector<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; entry. SSL support requires the following steps (see the SSL Config<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HOWTO in the Tomcat 5 documentation bundle for more detailed<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; instructions):<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * If your JDK version 1.3 or prior, download and install JSSE 1.0.2 or<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; later, and put the JAR files into "$JAVA_HOME/jre/lib/ext".<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * Execute:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA (Windows)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA (Unix)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; with a password value of "changeit" for both the certificate and<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the keystore itself.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; By default, DNS lookups are enabled when a web application calls<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; request.getRemoteHost(). This can have an adverse impact on<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; performance, so you can disable it by setting the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "enableLookups" attribute to "false". When DNS lookups are disabled,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; request.getRemoteHost() will return the String version of the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IP address of the remote client.<br>
&nbsp;&nbsp;&nbsp; --&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;!-- 一个“Connector”（连接器）代表一个请求被接收和应答所需要的端点。每个连<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 接器通过相关的“Container”（容器）处理请求。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 默认情况下，一个非SSL的HTTP/1.1的连接器被绑定在端口8080。你也可以通过<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 根据后面的使用说明并取消第二个连接器入口的注释，在端口8443上建立一个<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SSL HTTP/1.1的连接器。开放SSL支持需要下面几步（参见Tomcat 5文档中怎样<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 配置SSL的说明以取得更多的详细信息）：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * 如果你的JDK是1.3或1.3以前的版本，下载安装JSSE 1.0.2或以后版本，并放<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 置JAR文件到“$JAVA_HOME/jre/lib/ext”目录下。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * 带一个“changeit”的口令值执行：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA (Windows)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA (UNIX)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 来生成它自己的证书私钥。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 默认情况下，当一个web应用程序调用请求时，DNS查询是可行的。这将对性能造<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 成一些不利的影响，因此，你可以将“enableLookups”设置为“false”来关闭DNS<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查询。当DNS查询被关闭时，request.getRemoteHost()将返回包含远程客户IP地<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 址的字符串。<br>
&nbsp; --&gt;<br>
<br>
&nbsp;&nbsp;&nbsp; &lt;!-- Define a non-SSL Coyote HTTP/1.1 Connector on port 8080 --&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;!-- 在8080端口上定义一个非SSL的HTTP/1.1连接器 --&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;Connector port="8080"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
enableLookups="false" redirectPort="8443" acceptCount="100"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; debug="0" connectionTimeout="20000"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; disableUploadTimeout="true" /&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;!-- Note : To disable connection timeouts, set connectionTimeout value<br>
&nbsp;&nbsp;&nbsp;&nbsp; to 0 --&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;!-- 注意，要关闭连接超时，将connectionTimeout设置为0 --&gt;<br>
<br>
&lt;!-- Note : To use gzip compression you could set the following properties :<br>
<br>
compression="on"<br>
compressionMinSize="2048"<br>
noCompressionUserAgents="gozilla, traviata"<br>
compressableMimeType="text/html,text/xml"<br>
--&gt;<br>
&lt;!-- 注意：要使用gzip压缩需要设置如下属性：<br>
<br>
compression="on"<br>
compressionMinSize="2048"<br>
noCompressionUserAgents="gozilla,traviata"<br>
compressableMimeType="text/html,text/xml"<br>
--&gt;<br>
<br>
&nbsp;&nbsp;&nbsp; &lt;!-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 --&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;!-- 在端口8443上定义一个SSL的HTTP/1.1的连接器 --&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;!--<br>
&nbsp;&nbsp;&nbsp; &lt;Connector port="8443"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
enableLookups="false" disableUploadTimeout="true"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
acceptCount="100" debug="0" scheme="https" secure="true"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; clientAuth="false" sslProtocol="TLS" /&gt;<br>
&nbsp;&nbsp;&nbsp; --&gt;<br>
<br>
&nbsp;&nbsp;&nbsp; &lt;!-- Define a Coyote/JK2 AJP 1.3 Connector on port 8009 --&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;!-- 在端口8009上定义一个Coyote/JK2 AJP 1.3连接器 --&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;Connector port="8009"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
enableLookups="false" redirectPort="8443" debug="0"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protocol="AJP/1.3" /&gt;<br>
<br>
&nbsp;&nbsp;&nbsp; &lt;!-- Define a Proxied HTTP/1.1 Connector on port 8082 --&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;!-- 在8082端口上定义一个代理HTTP/1.1连接器 --&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;!-- See proxy documentation for more information about using this. --&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;!-- 参见代理文档以取得这里使用属性的更多的信息。 --&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;!--<br>
&nbsp;&nbsp;&nbsp; &lt;Connector port="8082"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; enableLookups="false"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
acceptCount="100" debug="0" connectionTimeout="20000"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
proxyPort="80" disableUploadTimeout="true" /&gt;<br>
&nbsp;&nbsp;&nbsp; --&gt;<br>
<br>
&nbsp;&nbsp;&nbsp; &lt;!-- An Engine represents the entry point (within Catalina) that processes<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; every request. The Engine implementation for Tomcat stand alone<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; analyzes the HTTP headers included with the request, and passes them<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; on to the appropriate Host (virtual host). --&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;!-- 一个“Engine”（引擎）代表处理每个请求的入口点（在Catalina内）。这个Tomcat<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 的标准独立引擎实现分析包含在请求中的HTTP头信息，并将请求传送到适当的主机<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 或虚拟主机上。--&gt;<br>
<br>
&nbsp;&nbsp;&nbsp; &lt;!-- You should set jvmRoute to support load-balancing via JK/JK2 ie :<br>
&nbsp;&nbsp;&nbsp; &lt;Engine name="Standalone" defaultHost="localhost" debug="0" jvmRoute="jvm1"&gt;<br>
&nbsp;&nbsp;&nbsp; --&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;!-- 你应该这样设置jvmRoute以便在JK/JK2通道上支持负载平衡：<br>
&nbsp;&nbsp;&nbsp; &lt;Engine name="Standalone" defaultHost="localhost" debug="0" jvmRoute="jvm1"&gt;<br>
&nbsp;&nbsp;&nbsp; --&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br>
&nbsp;&nbsp;&nbsp; &lt;!-- Define the top level container in our container hierarchy --&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;!-- 在我们的容器体系中定义最高级别的容器 --&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;Engine name="Catalina" defaultHost="localhost" debug="0"&gt;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- The request dumper valve dumps useful debugging information about<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the
request headers and cookies that were received, and the response<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; headers and cookies that were sent, for all requests received by<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this instance of Tomcat. If you care only about requests to a<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; particular virtual host, or a particular application, nest this<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; element
inside the corresponding &lt;Host&gt; or &lt;Context&gt; entry instead.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For a similar mechanism that is portable to all Servlet 2.4<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; containers, check out the "RequestDumperFilter" Filter in the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; example application (the source for this filter may be found in<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "$CATALINA_HOME/webapps/examples/WEB-INF/classes/filters").<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Request dumping is disabled by default. Uncomment the following<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; element to enable it. --&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 请求转储器值转储非常有用的通过Tomcat这个实例接收到的所有请求的，关于<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 接收到的请求头和cookies，以及发送出的回应头和cookies的调试信息。如果<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 你只在意一个特定的虚拟主机或者一个特定应用程序的请求，在对应的&lt;Host&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 或&lt;Context&gt;入口中套用这个元素。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对于所有的Servlet（小服务程序）2.4来所，在示例程序中检验<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; “RequestDumperFilter”过滤是非常容易的（这个过滤器源代码可以在<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; “$CATALINA_HOME/webapps/examples/WEB-INF/classes/filters”下找到。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 请求转储默认情况下是关闭的，如果要使用它，取消下面行的注释符。--&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Valve className="org.apache.catalina.valves.RequestDumperValve"/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --&gt;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- Global logger unless overridden at lower levels --&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 全局日志设置，除非在更低的级别上覆盖它的设置 --&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Logger className="org.apache.catalina.logger.FileLogger"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prefix="catalina_log." suffix=".txt"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; timestamp="true"/&gt;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- Because this Realm is here, an instance will be shared globally --&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 因为这个Realm（区域）在这儿，因此这个实例将被全局共享。 --&gt;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- This Realm uses the UserDatabase configured in the global JNDI<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; resources under the key "UserDatabase". Any edits<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; that are performed against this UserDatabase are immediately<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; available for use by the Realm. --&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 这个Realm（区域）使用在全局JNDI资源下，由“UserDatabase”配置的用户<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 数据库。通过使用Realm将使对于这个用户数据库的任何编辑都将会立即可用<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Realm className="org.apache.catalina.realm.UserDatabaseRealm"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
debug="0" resourceName="UserDatabase"/&gt;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- Comment out the old realm but leave here for now in case we<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; need to go back quickly --&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 注释掉旧有的Realm以便我们能很快速的恢复旧有配置。 --&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Realm className="org.apache.catalina.realm.MemoryRealm" /&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --&gt;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- Replace the above Realm with one of the following to get a Realm<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stored in a database and accessed via JDBC --&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 下面的属性用于从储存在数据库或从JDBC通道中得到的Realm以取代上面的<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Realm配置。--&gt;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Realm className="org.apache.catalina.realm.JDBCRealm" debug="99"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; driverName="org.gjt.mm.mysql.Driver"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; connectionURL="jdbc:mysql://localhost/authority"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; connectionName="test" connectionPassword="test"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
userTable="users" userNameCol="user_name" userCredCol="user_pass"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; userRoleTable="user_roles" roleNameCol="role_name" /&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --&gt;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Realm className="org.apache.catalina.realm.JDBCRealm" debug="99"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; driverName="oracle.jdbc.driver.OracleDriver"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; connectionURL="jdbc:oracle:thin:@ntserver:1521:ORCL"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; connectionName="scott" connectionPassword="tiger"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
userTable="users" userNameCol="user_name" userCredCol="user_pass"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; userRoleTable="user_roles" roleNameCol="role_name" /&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --&gt;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Realm className="org.apache.catalina.realm.JDBCRealm" debug="99"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; driverName="sun.jdbc.odbc.JdbcOdbcDriver"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; connectionURL="jdbc:odbc:CATALINA"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
userTable="users" userNameCol="user_name" userCredCol="user_pass"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; userRoleTable="user_roles" roleNameCol="role_name" /&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --&gt;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- Define the default virtual host<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Note: XML Schema validation will not work with Xerces 2.2.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 定义默认的虚拟主机<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 注意：XML模式确认将不能与Xerces 2.2同工作。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Host name="localhost" debug="0" appBase="webapps"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unpackWARs="true" autoDeploy="true"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlValidation="false" xmlNamespaceAware="false"&gt;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- Defines a cluster for this node,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
By defining this element, means that every manager will be changed.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
So when running a cluster, only make sure that you have webapps in there<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; that need to be clustered and remove the other ones.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A cluster has the following parameters:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 为这个结点定义一个群集，通过定义这个元素，意味着每个管理员都将被改变。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 因此，当运行一个群集时，只有确认在必须被聚集和移除其他的地方有你的<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; web软件。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一个群集有下面这些参数：<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
className = the fully qualified name of the cluster class<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; className = 这个群集类的全限定名<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
name = a descriptive name for your cluster, can be anything<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name = 你的群集的描述名，可以是任何描述<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; debug = the debug level, higher means more output<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; debug = 调试级别，更高意味着更多的输出<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mcastAddr = the multicast address, has to be the same for all the nodes<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mcastAddr = 多播地址，所有的节点都必须有同样的多播地址<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mcastPort = the multicast port, has to be the same for all the nodes<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mcastPort = 多播端口，对所有的节点都必须有同样的多播端口<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mcastBindAddr = bind the multicast socket to a specific address<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mcastBindAddr = 绑定多播套接字到一个指定的地址<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mcastTTL = the multicast TTL if you want to limit your broadcast<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mcastTTL = 多播生存期，如果你想要限制你的广播的话<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mcastSoTimeout = the multicast readtimeout<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mcastSoTimeout = 多播读取超时<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mcastFrequency = the number of milliseconds in between sending a "I'm
alive" heartbeat<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mcastFrequency = 发送“I'm alive”（我还活着）信息的间隔毫秒数<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mcastDropTime = the number a milliseconds before a node is considered
"dead" if no heartbeat is received<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mcastDropTime = 多长时间没有收到“I'm alive”就将这个节点标识为死节点（单位：毫秒）<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
tcpThreadCount = the number of threads to handle incoming replication
requests, optimal would be the same amount of threads as nodes<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tcpThreadCount = 用于处理重复引入请求的线程数，最好是每个节点都有相同的线程数<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
tcpListenAddress = the listen address (bind address) for TCP cluster
request on this host,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
in case of multiple ethernet cards.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
auto means that address becomes<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
InetAddress.getLocalHost().getHostAddress()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tcpListenAddress = 在有多块以太网卡的主机上的监听TCP群集请求的地址（绑定地址），<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
auto意味着地址由InetAddress.getLocalHost().getHostAddress()取得。<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tcpListenPort = the tcp listen port<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tcpListenPort = tcp监听端口<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
tcpSelectorTimeout = the timeout (ms) for the Selector.select() method
in case the OS<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
has a wakup bug in java.nio. Set to 0 for no timeout<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
tcpSelectorTimeout = 在操作系统中有java.nio唤醒错的情况下，使用Selector.select()的超时<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
毫秒数。设为0则没有超时限制<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
printToScreen = true means that managers will also print to std.out<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printToScreen = true意味着管理员的相关信息也将打印输出到std.out<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; expireSessionsOnShutdown = true means that<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; expireSessionsOnShutdown = true 意味着?????<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
useDirtyFlag = true means that we only replicate a session after
setAttribute,removeAttribute has been called.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
false means to replicate the session after each request.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
false means that replication would work for the following piece of code:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;%<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
HashMap map = (HashMap)session.getAttribute("map");<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
map.put("key","value");<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
%&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
useDirtyFlag = true意味着我们只能在调用setAttribute，removeAttribute后才能复制一个会话；<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
false意味着在每个请求后复制会话。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
false意味着复制将以下列代码方式工作：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;%<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
HashMap map = (HashMap)session.getAttribute("map");<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
map.put("key","value");<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
%&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
replicationMode = can be either 'pooled', 'synchronous' or
'asynchronous'.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
* Pooled means that the replication happens using several sockets in a
synchronous way. Ie, the data gets replicated, then the request return.
This is the same as the 'synchronous' setting except it uses a pool of
sockets, hence it is multithreaded. This is the fastest and safest
configuration. To use this, also increase the nr of tcp threads that
you have dealing with replication.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
* Synchronous means that the thread that executes the request, is also
the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
thread the replicates the data to the other nodes, and will not return
until all<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
nodes have received the information.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
* Asynchronous means that there is a specific 'sender' thread for each
cluster node,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
so the request thread will queue the replication request into a "smart"
queue,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
and then return to the client.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
The "smart" queue is a queue where when a session is added to the
queue, and the same session<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
already exists in the queue from a previous request, that session will
be replaced<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
in the queue instead of replicating two requests. This almost never
happens, unless there is a<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
large network delay.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
replicationMode = 可以是“pooled”、“synchronous”或者“asynchronous”<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
* Pooled意味着在多个套接字上同步进行复制。例如，先复制数据，然后请求返回。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
这与“synchronous”相同，除了它使用一个套接字池，因此，它是多线程的。它是<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
最快和最高级的设置，使用这个配置也增加了处理复制的tcp线程的域。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
* Synchronous指执行请求的线程，它也是向其他节点复制数据的线程，并且直到<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
所有的节点都己经收到信息后才返回。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
* Asynchronous，对每个群集节点而言，这是一个特别的“sender”（发送者）线程，<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
因此请求线程将复制请求排队到一个小队列中，然后，返回给用户。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
这个小队列是一个当会话被添加到队列中，而从先前的请求中，同一个会话己经存在<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
，这个会话将被放置在队列中以代替重复的两个请求。这几乎从不会发生，除非存在<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
较大的网络延迟。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; When
configuring for clustering, you also add in a valve to catch all the
requests<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
coming in, at the end of the request, the session may or may not be
replicated.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A
session is replicated if and only if all the conditions are met:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.
useDirtyFlag is true or setAttribute or removeAttribute has been called
AND<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2. a session exists (has been created)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3. the request is not trapped by the "filter" attribute<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The
filter attribute is to filter out requests that could not modify the
session,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
hence we don't replicate the session after the end of this request.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The
filter is negative, ie, anything you put in the filter, you mean to
filter out,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ie,
no replication will be done on requests that match one of the filters.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The
filter attribute is delimited by ;, so you can't escape out ; even if
you wanted to.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
filter=".*\.gif;.*\.js;" means that we will not replicate the session
after requests with the URI<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ending with .gif and .js are intercepted.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 当配置群集时，你也添加一个值来捕获所有传入的请求，在请求结束时，这个会话可能被子复制，<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 也可能不被复制。一个会话是否复制取决于下列条件是否发生：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1. useDirtyFlag为真，或者setAttribute或者removeAttribute己经被调用。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2. 会话己经存在（己经被创建了）。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3. 请求没有被“filter”属性所捕获。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这个filter（过滤器）属性用于过滤那些不能修改会话的请求，因此，我们在这个请求结束后不复制<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 会主。这个过滤器是消极的，例如，你向过滤器发送了一些东西，然后被过滤出去，在那个匹配的过<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 滤器上不会发生复制。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 过滤器属性以分号为分隔，因此你不能换行，即使你想这么做。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; filter=".*\.gif;.*\.js;"意味着在进行以.gif和.js结束的URI请求后不复制会话。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
managerClassName="org.apache.catalina.cluster.session.DeltaManager"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
expireSessionsOnShutdown="false"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; useDirtyFlag="true"&gt;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Membership<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
className="org.apache.catalina.cluster.mcast.McastService"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mcastAddr="228.0.0.4"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mcastPort="45564"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mcastFrequency="500"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mcastDropTime="3000"/&gt;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Receiver<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
className="org.apache.catalina.cluster.tcp.ReplicationListener"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tcpListenAddress="auto"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tcpListenPort="4001"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tcpSelectorTimeout="100"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tcpThreadCount="6"/&gt;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Sender<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; replicationMode="pooled"/&gt;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;Valve className="org.apache.catalina.cluster.tcp.ReplicationValve"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
filter=".*\.gif;.*\.js;.*\.jpg;.*\.htm;.*\.html;.*\.txt;"/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Cluster&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --&gt;<br>
<br>
<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- Normally, users must authenticate themselves to each web app<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
individually. Uncomment the following entry if you would like<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
a user to be authenticated the first time they encounter a<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
resource protected by a security constraint, and then have that<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
user identity maintained across *all* web applications contained<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; in this virtual host. --&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 通常，对每一个应用程序，用户必须逐个的认证他们自己。当他们遇到被<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 某种安全约束所保护的资源时，如果你想让用户只在第一次被认证，那么，<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 取消下面入口行的注释，然后在这个虚拟主机中包含这个用户的，横跨所有<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; web应用程序的用户身份识别。--&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Valve className="org.apache.catalina.authenticator.SingleSignOn"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; debug="0"/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --&gt;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- Access log processes all requests for this virtual host. By<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
default, log files are created in the "logs" directory relative to<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
$CATALINA_HOME. If you wish, you can specify a different<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
directory with the "directory" attribute. Specify either a relative<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
(to $CATALINA_HOME) or absolute path to the desired directory.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 这个虚拟主机的所有请求的访问日志过程。默认情况下，日志文件被创建在相对<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 于$CATALINA_HOME目录下的logs目录下。通过directory属性，你也可以指定一个<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 不同的目录，如果你想的话。可以使用相对路径（相对于$CATALINA_HOME），也<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可以使用绝对路径。--&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Valve className="org.apache.catalina.valves.AccessLogValve"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
directory="logs" prefix="localhost_access_log." suffix=".txt"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pattern="common" resolveHosts="false"/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --&gt;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- Logger shared by all Contexts related to this virtual host. By<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
default (when using FileLogger), log files are created in the "logs"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
directory relative to $CATALINA_HOME. If you wish, you can specify<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
a different directory with the "directory" attribute. Specify either a<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
relative (to $CATALINA_HOME) or absolute path to the desired<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; directory.--&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 与这个虚拟主机有关系所有上下文所共享的日志。默认情况下（使用FileLogger时），<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 日志文件被创建在相对于$CATALINA_HOME目录下的logs目录下。如果你希望，你也可<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 以给directory指定一个不同的路径。可以使用相对于$CATALINA_HOME的相对路径，也<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可以使用绝对路径。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Logger className="org.apache.catalina.logger.FileLogger"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
directory="logs" prefix="localhost_log." suffix=".txt"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; timestamp="true"/&gt;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Host&gt;<br>
<br>
&nbsp;&nbsp;&nbsp; &lt;/Engine&gt;<br>
<br>
&nbsp; &lt;/Service&gt;<br>
<br>
&lt;/Server&gt;<img src ="http://www.blogjava.net/ranxiang/aggbug/23145.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ranxiang/" target="_blank">冉翔</a> 2005-12-09 15:19 <a href="http://www.blogjava.net/ranxiang/articles/23145.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>