﻿<?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-无所惧，无所悔,为梦想执着的拼搏-文章分类-Tomcat 技术文档</title><link>http://www.blogjava.net/DreamFight/category/36494.html</link><description /><language>zh-cn</language><lastBuildDate>Sat, 01 May 2010 23:47:36 GMT</lastBuildDate><pubDate>Sat, 01 May 2010 23:47:36 GMT</pubDate><ttl>60</ttl><item><title>修改MYSQLroot密码命令</title><link>http://www.blogjava.net/DreamFight/articles/319518.html</link><dc:creator>DreamFight</dc:creator><author>DreamFight</author><pubDate>Tue, 27 Apr 2010 10:57:00 GMT</pubDate><guid>http://www.blogjava.net/DreamFight/articles/319518.html</guid><wfw:comment>http://www.blogjava.net/DreamFight/comments/319518.html</wfw:comment><comments>http://www.blogjava.net/DreamFight/articles/319518.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DreamFight/comments/commentRss/319518.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DreamFight/services/trackbacks/319518.html</trackback:ping><description><![CDATA[<div class="tit">修改MYSQLroot密码命令</div>
<div class="date">如果忘记密码快速的办法：<br />
<br />
先确认已经杀掉mysqld 进程了，然后执行这个 <br />
/usr/bin/mysqld --skip-grant-tables &amp; <br />
再这样登录 <br />
mysql -h 192.168.1.2 -u root <br />
<br />
这里192.168.1.2为你的机器ip地址,如果在本机可使用127.0.0.1<br />
执行完上边的后执行：<br />
use mysql;<br />
update user set password =password('yourpass') where user='root' <br />
这样您的root密码就修改ok了。<br />
<br />
</div>
<table style="table-layout: fixed; width: 100%">
    <tbody>
        <tr>
            <td>
            <div class="cnt" id="blog_text">
            <p>一、请问在win2K命令提示符下怎样更改mysql的root管理员密码？</p>
            <p>&gt;mysql -u root -p<br />
            Enter password: ******<br />
            mysql&gt; use mysql;<br />
            mysql&gt; update user set password=password('new_password') where user='root';</p>
            <p>通过这种方法就可以直接修改密码了。至于在CMD下能否登陆MySQL，就要在Windows环境变量PATH中添加&#8220;C:\Program Files\MySQL\MySQL Server 5.0\bin;&#8221;（请改为你自己的安装路径）了。</p>
            <p>二、MYSQL 修改root密码命令</p>
            <p>cmd下切换到 mysql 安装目录<br />
            例<br />
            d:/mysql/bin<br />
            前提：mysql用户root密码为空.<br />
            输入 mysql -u root mysql <br />
            mysql&gt; 状态下输入 update user set password=password('新密码') where user='root'; <br />
            回显 <br />
            Query OK, 0 rows affected (0.00 sec) <br />
            Rows matched: 2 Changed: 0 Warnings: 0 <br />
            mysql&gt; 状态下输入 FLUSH PRIVILEGES; <br />
            回显<br />
            Query OK, 0 rows affected (0.00 sec)<br />
            mysql&gt; 状态下输入 quit <br />
            退出 sql</p>
            <p>注意每个命令后都要加上一个分号 ";" <br />
            mysql 才开始执行该行命令<br />
            而第二个指令会让已载入记忆体的 mysql 系统资料库更新</p>
            <p>重起 mysql .<br />
            在更新 root 密码後，日後要与 MySQL 连线的方法为：</p>
            <p>mysql -uroot -p新密码</p>
            <p>忘记mysql 的root 密码： <br />
            先确认已经杀掉mysqld 进程了，然后执行这个 <br />
            /usr/bin/safe_mysqld --skip-grant-tables &amp; <br />
            再这样登录 <br />
            mysql -h 192.168.1.2 -u root <br />
            上边的192.168.1.2 是cloud 的mysqld 运行机器，你换成自己的，这样登录上 <br />
            去，就可以修改密码了。 <br />
            修改密码 <br />
            1.mysql -h hostname &#8211;u root 命令登录到mysqld server 用grant 命令改变口令: <br />
            Grant all on *.* to root indentified by "111111" <br />
            2. mysqladmin -u 用户名-p 旧密码password 新密码 <br />
            例1：给root 加个密码ab12。首先在DOS 下进入目录mysqlbin，然后键入 <br />
            以下命令 <br />
            mysqladmin -uroot password ab12 <br />
            注：因为开始时root 没有密码，所以-p 旧密码一项就可以省略了。 <br />
            2、例2：再将root 的密码改为djg345。 <br />
            mysqladmin &#8211;u root -pab12 password djg345 (注意-p 不要和后面的密码分 <br />
            开写，要写在一起) <br />
            3. <br />
            use mysql; update user set password =password('yourpass') where user='r <br />
            oot' <br />
            4. 载入权限表： `mysqladmin -h hostname flush-privileges' ，或者使 <br />
            用SQL 命令`FLUSH PRIVILEGES'。（当然，在这里，你也可以重启mysqld。） <br />
            mysql 的建库，添加数据方法： <br />
            mysqi &#8211;u root <br />
            mysql&gt;create database ttt; <br />
            mysql&gt;source 1.txt <br />
            mysql&gt;load data local infile "2.txt" into table board; <br />
            1.txt 内容: <br />
            CREATE TABLE board ( <br />
            boardid int(11) NOT NULL auto_increment, <br />
            boardname char(255), <br />
            PRIMARY KEY (boardid) <br />
            ); <br />
            2.txt 内容: <br />
            1 lk(Tab 键分开) <br />
            2 lklk <br />
            3 lklklk <br />
            导出database: <br />
            #mysqldump &#8211;opt ttt &#8211;uroot &#8211;p111111 &gt; 111.sql <br />
            导入database <br />
            1. #mysql &#8211;u root &#8211;p111111 ttt &lt; 111.sql <br />
            2. mysql&gt;source 111.sql; <br />
            导出的多个database：#mysqldump &#8211;-databases ttt1 ttt2 ttt3 &#8211;uroot &#8211;p111111 <br />
            &gt; 111.sql <br />
            导出所有database：#mysqldump &#8211;-all-databases &#8211;uroot &#8211;p111111 &gt; 111.sql</p>
            </div>
            </td>
        </tr>
    </tbody>
</table>
 <img src ="http://www.blogjava.net/DreamFight/aggbug/319518.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DreamFight/" target="_blank">DreamFight</a> 2010-04-27 18:57 <a href="http://www.blogjava.net/DreamFight/articles/319518.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>为特定的web设置虚拟目录</title><link>http://www.blogjava.net/DreamFight/articles/247866.html</link><dc:creator>DreamFight</dc:creator><author>DreamFight</author><pubDate>Tue, 23 Dec 2008 01:59:00 GMT</pubDate><guid>http://www.blogjava.net/DreamFight/articles/247866.html</guid><wfw:comment>http://www.blogjava.net/DreamFight/comments/247866.html</wfw:comment><comments>http://www.blogjava.net/DreamFight/articles/247866.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DreamFight/comments/commentRss/247866.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DreamFight/services/trackbacks/247866.html</trackback:ping><description><![CDATA[举例说明：<br />
1.如果我有一个web它的位置在c:\myweb在这个目录下有一个jsp文件：a.jsp,在c:\myweb\image下有一个b.jsp文件<br />
并且我在浏览器中输入<a href="http://localhost:8080/web">http://localhost:8080/web</a>可以访问到这个web<br />
<br />
如果我没有设置虚拟目录的话我想要运行这个web必须要把这个文件复制到webapps下，但是现在由于需要我不能把它复制到这个目录下，所以我要设置虚拟目录。<br />
<br />
首先我要打开conf/server.xml文件然后找到&lt;host 这个标签，在里边加入：<br />
&lt;context path="/web" docbase="c:\myweb" reloadable="true"&gt;便可以了。<br />
下面来说一上它的几个参数代表的意思：<br />
path:就是你在地址栏中输入的web<br />
docbase:就是你的实际目录c:\myweb<br />
reloadable:就是让你的web 是否能够重加载 <br />
<br />
当们访问b.jsp的时候就可以在浏览器中输入：<a href="http://localhost:8080/web">http://localhost:8080/web/image/b.js</a>p<br />
如果在a.jsp中要做链接可以：<br />
&lt;a href="image/b.jsp"&gt;
<img src ="http://www.blogjava.net/DreamFight/aggbug/247866.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DreamFight/" target="_blank">DreamFight</a> 2008-12-23 09:59 <a href="http://www.blogjava.net/DreamFight/articles/247866.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在Tomcat中添加多个监听端口</title><link>http://www.blogjava.net/DreamFight/articles/247858.html</link><dc:creator>DreamFight</dc:creator><author>DreamFight</author><pubDate>Tue, 23 Dec 2008 01:35:00 GMT</pubDate><guid>http://www.blogjava.net/DreamFight/articles/247858.html</guid><wfw:comment>http://www.blogjava.net/DreamFight/comments/247858.html</wfw:comment><comments>http://www.blogjava.net/DreamFight/articles/247858.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DreamFight/comments/commentRss/247858.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DreamFight/services/trackbacks/247858.html</trackback:ping><description><![CDATA[在Tomcat下的conf下的server.xml中找到<br />
<br />
<font style="background-color: #c7edcc">&nbsp;&lt;Connector port="8080" <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxThreads="150" <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; minSpareThreads="25" <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 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; redirectPort="8443" <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; acceptCount="100"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; debug="0" <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; connectionTimeout="20000" <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; disableUploadTimeout="true" /&gt;</font><br />
把它复制一份 然后再其一粘贴，修改 port
<img src ="http://www.blogjava.net/DreamFight/aggbug/247858.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DreamFight/" target="_blank">DreamFight</a> 2008-12-23 09:35 <a href="http://www.blogjava.net/DreamFight/articles/247858.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat-server.xml讲解</title><link>http://www.blogjava.net/DreamFight/articles/247856.html</link><dc:creator>DreamFight</dc:creator><author>DreamFight</author><pubDate>Tue, 23 Dec 2008 01:31:00 GMT</pubDate><guid>http://www.blogjava.net/DreamFight/articles/247856.html</guid><wfw:comment>http://www.blogjava.net/DreamFight/comments/247856.html</wfw:comment><comments>http://www.blogjava.net/DreamFight/articles/247856.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DreamFight/comments/commentRss/247856.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DreamFight/services/trackbacks/247856.html</trackback:ping><description><![CDATA[<div><font style="background-color: #c7edcc">&lt;!-- Example Server Configuration File --&gt;<br />
&lt;!-- Note that component elements are nested corresponding to their<br />
&nbsp;&nbsp;&nbsp;&nbsp; parent-child relationships with each other --&gt;</font></div>
<div>&nbsp;</div>
<div><font style="background-color: #c7edcc">&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.&nbsp; The Server<br />
&nbsp;&nbsp;&nbsp;&nbsp; listens for a shutdown command on the indicated port.</font></div>
<div>&nbsp;</div>
<div><font style="background-color: #c7edcc">&nbsp;&nbsp;&nbsp;&nbsp; Note:&nbsp; 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;</font></div>
<div>&nbsp;</div>
<div><font style="background-color: #c7edcc">&lt;Server port="8005" //监听端口<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; shutdown="SHUTDOWN" //要监听的命令<br />
&nbsp;&nbsp;debug="0"&gt;</font></div>
<div>&nbsp;</div>
<font style="background-color: #c7edcc">
<div><br />
&nbsp; &lt;!-- Comment these entries out to disable JMX MBeans support --&gt;<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;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;</div>
<div>&nbsp;</div>
<div>&nbsp; &lt;!-- Global JNDI resources --&gt;<br />
&nbsp; &lt;GlobalNamingResources&gt;</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp; &lt;!-- Test entry for demonstration purposes --&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;Environment name="simpleValue" type="java.lang.Integer" value="30"/&gt;</div>
<div>&nbsp;</div>
<div>&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;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;</div>
<div>&nbsp;</div>
<div>&nbsp; &lt;/GlobalNamingResources&gt;</div>
<div>&nbsp;</div>
<div>&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).&nbsp; Normally, that Container is an "Engine",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; but this is not required.</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Note:&nbsp; 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;</div>
<div>&nbsp;</div>
<div>&nbsp; &lt;!-- Define the Tomcat Stand-Alone Service --&gt;<br />
&nbsp; &lt;Service name="Catalina"&gt;</div>
<div>&nbsp;</div>
<div>&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.&nbsp; Each Connector passes requests on to the<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; associated "Container" (normally an Engine) for processing.</div>
<div>&nbsp;</div>
<div>&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.&nbsp; 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&nbsp; (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.</div>
<div>&nbsp;</div>
<div>&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().&nbsp; 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".&nbsp; 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;</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp; &lt;!-- Define a non-SSL Coyote HTTP/1.1 Connector on the port specified<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; during installation&nbsp; --&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;Connector port="8080" <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxThreads="150" <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; minSpareThreads="25" <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 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; redirectPort="8443" <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; acceptCount="100"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; debug="0" <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 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;<br />
&nbsp;&lt;!-- Note : To use gzip compression you could set the following properties :<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; compression="on" <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; compressionMinSize="2048" <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; noCompressionUserAgents="gozilla, traviata" <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; compressableMimeType="text/html,text/xml"<br />
&nbsp;--&gt;</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp; &lt;!-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 --&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;</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp; &lt;!-- Define a Coyote/JK2 AJP 1.3 Connector on port 8009 --&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;</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp; &lt;!-- Define a Proxied HTTP/1.1 Connector on port 8082 --&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;!-- See proxy documentation for more information about using this. --&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;</div>
<div>&nbsp;</div>
<div>&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.&nbsp; 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;</div>
<div>&nbsp;</div>
<div>&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <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;Engine name="Catalina" <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; defaultHost="localhost" //缺省的服务器地址<br />
&nbsp;&nbsp;&nbsp;debug="0"&gt;</div>
<div>&nbsp;</div>
<div>&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.&nbsp; 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.</div>
<div>&nbsp;</div>
<div>&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").</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Request dumping is disabled by default.&nbsp; 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;!--<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Valve className="org.apache.catalina.valves.RequestDumperValve"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --&gt;</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- Global logger unless overridden at lower levels --&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;</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- Because this Realm is here, an instance will be shared globally --&gt;</div>
<div>&nbsp;</div>
<div>&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".&nbsp; 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.&nbsp; --&gt;<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;</div>
<div>&nbsp;</div>
<div>&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;!--<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Realm className="org.apache.catalina.realm.MemoryRealm" /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --&gt;</div>
<div>&nbsp;</div>
<div>&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;</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Realm&nbsp; 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;</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Realm&nbsp; 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;</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Realm&nbsp; 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;</div>
<div>&nbsp;</div>
<div>&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;Host name="localhost" //服务器的地址<br />
&nbsp;&nbsp; &nbsp;&nbsp;debug="0" <br />
&nbsp;&nbsp;&nbsp;appBase="webapps" //服务器web的存放地址<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unpackWARs="true" <br />
&nbsp;&nbsp;&nbsp;autoDeploy="true"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlValidation="false" <br />
&nbsp;&nbsp;&nbsp;xmlNamespaceAware="false"&gt;</div>
<div>&nbsp;</div>
<div>&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:</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; className = the fully qualified name of the cluster class</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name = a descriptive name for your cluster, can be anything</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; debug = the debug level, higher means more output</div>
<div>&nbsp;</div>
<div>&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</div>
<div>&nbsp;</div>
<div>&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</div>
<div>&nbsp;</div>
<div>&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</div>
<div>&nbsp;</div>
<div>&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</div>
<div>&nbsp;</div>
<div>&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 </div>
<div>&nbsp;</div>
<div>&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()</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tcpListenPort = the tcp listen port</div>
<div>&nbsp;</div>
<div>&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</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printToScreen = true means that managers will also print to std.out</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; expireSessionsOnShutdown = true means that </div>
<div>&nbsp;</div>
<div>&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; 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; --&gt;&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;&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</div>
<div>&nbsp;</div>
<div>&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.</div>
<div>&nbsp;</div>
<div>&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; <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;</div>
<div>&nbsp;</div>
<div>&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;</div>
<div>&nbsp;</div>
<div>&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;</div>
<div>&nbsp;</div>
<div>&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;</div>
<div>&nbsp;</div>
<div>&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&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.&nbsp; 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; &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;</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- Access log processes all requests for this virtual host.&nbsp; 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.&nbsp; 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.&nbsp; 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; &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"&nbsp; 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;</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- Logger shared by all Contexts related to this virtual host.&nbsp; 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.&nbsp; 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.&nbsp; 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;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"&nbsp; prefix="localhost_log." suffix=".txt"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; timestamp="true"/&gt;</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Host&gt;</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp; &lt;/Engine&gt;</div>
<div>&nbsp;</div>
<div>&nbsp; &lt;/Service&gt;</div>
<div>&nbsp;</div>
<div>&lt;/Server&gt;<br />
</font></div>
<img src ="http://www.blogjava.net/DreamFight/aggbug/247856.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DreamFight/" target="_blank">DreamFight</a> 2008-12-23 09:31 <a href="http://www.blogjava.net/DreamFight/articles/247856.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat中server.xml配置介绍</title><link>http://www.blogjava.net/DreamFight/articles/247853.html</link><dc:creator>DreamFight</dc:creator><author>DreamFight</author><pubDate>Tue, 23 Dec 2008 01:21:00 GMT</pubDate><guid>http://www.blogjava.net/DreamFight/articles/247853.html</guid><wfw:comment>http://www.blogjava.net/DreamFight/comments/247853.html</wfw:comment><comments>http://www.blogjava.net/DreamFight/articles/247853.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DreamFight/comments/commentRss/247853.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DreamFight/services/trackbacks/247853.html</trackback:ping><description><![CDATA[<p style="margin: 0cm 0cm 0pt; text-align: center" align="center"><span><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span><span><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt">&lt;<span style="color: blue">Server port</span>="8005" <span style="color: blue">shutdown</span>="SHUTDOWN" debug="0"&gt;</span></span></span></span>&nbsp;&nbsp;<br />
</span>&lt;Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"</span></span></span></span></span></span></font></span></p>
<p style="margin: 0cm 0cm 0pt"><span><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>debug="0"/&gt;</span></span></span></span></span></span></font></span></p>
<p style="margin: 0cm 0cm 0pt"><span><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt">&lt;Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"</span></span></span></span></span></span></span></p>
<p style="margin: 0cm 0cm 0pt"><span><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>debug="0"/&gt;</span></span></span></span></span></span></font></span></p>
<p style="margin: 0cm 0cm 0pt"><span><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>&nbsp;&nbsp;</span>&lt;GlobalNamingResources&gt;</span></span></span></span></span></span></font></span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt">&lt;Environment name="simpleValue" type="java.lang.Integer" value="30"/&gt;</span></span></span></span></span></span></span></p>
<p style="margin: 0cm 0cm 0pt"><span><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span>&lt;Resource name="UserDatabase" auth="Container"</span></span></span></span></span></span></font></span></p>
<p style="margin: 0cm 0cm 0pt"><span><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>type="org.apache.catalina.UserDatabase"</span></span></span></span></span></span></font></span></p>
<p style="margin: 0cm 0cm 0pt"><span><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>description="User database that can be updated and saved"&gt;</span></span></span></span></span></span></font></span></p>
<p style="margin: 0cm 0cm 0pt"><span><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span>&lt;/Resource&gt;</span></span></span></span></span></span></font></span></p>
<p style="margin: 0cm 0cm 0pt"><span><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span>&lt;ResourceParams name="UserDatabase"&gt;</span></span></span></span></span></span></font></span></p>
<p style="margin: 0cm 0cm 0pt"><span><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&lt;parameter&gt;</span></span></span></span></span></span></font></span></p>
<p style="margin: 0cm 0cm 0pt"><span><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&lt;name&gt;factory&lt;/name&gt;</span></span></span></span></span></span></font></span></p>
<p style="margin: 0cm 0cm 0pt"><span><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&lt;value&gt;org.apache.catalina.users.MemoryUserDatabaseFactory&lt;/value&gt;</span></span></span></span></span></span></font></span></p>
<p style="margin: 0cm 0cm 0pt"><span><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&lt;/parameter&gt;</span></span></span></span></span></span></font></span></p>
<p style="margin: 0cm 0cm 0pt"><span><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&lt;parameter&gt;</span></span></span></span></span></span></font></span></p>
<p style="margin: 0cm 0cm 0pt"><span><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&lt;name&gt;pathname&lt;/name&gt;</span></span></span></span></span></span></font></span></p>
<p style="margin: 0cm 0cm 0pt"><span><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&lt;value&gt;conf/tomcat-users.xml&lt;/value&gt;</span></span></span></span></span></span></font></span></p>
<p style="margin: 0cm 0cm 0pt"><span><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&lt;/parameter&gt;</span></span></span></span></span></span></font></span></p>
<p style="margin: 0cm 0cm 0pt"><span><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span>&lt;/ResourceParams&gt;</span></span></span></span></span></span></font></span></p>
<p style="margin: 0cm 0cm 0pt"><span><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>&nbsp;&nbsp;</span>&lt;/GlobalNamingResources&gt;</span></span></span></span></span></span></font></span></p>
<p style="margin: 0cm 0cm 0pt"><span><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>&nbsp;&nbsp;</span>&lt;<span style="color: blue">Service name</span>="Tomcat-Standalone"&gt;</span></span></span></span></span></span></font></span></p>
<p style="margin: 0cm 0cm 0pt"><span><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span>&lt;<span style="color: blue">Connector</span> className="org.apache.coyote.tomcat4.CoyoteConnector"</span></span></span></span></span></span></font></span></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span style="color: blue">port</span><span>="8080"<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: blue">minProcessors</span>="5" <span style="color: blue">maxProcessors</span>="75"</span></span></span></span></span></span></span></font></p>
<p style="margin: 0cm 0cm 0pt"><span><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: blue">enableLookups</span>="true" <span style="color: blue">redirectPort</span>="8443"</span></span></span></span></span></span></font></span></p>
<p style="margin: 0cm 0cm 0pt"><span><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: blue">acceptCount</span>="100" debug="0" <span style="color: blue">connectionTimeout</span>="20000"</span></span></span></span></span></span></font></span></p>
<p style="margin: 0cm 0cm 0pt"><span><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>useURIValidationHack="false" disableUploadTimeout="true" /&gt;</span></span></span></span></span></span></font></span></p>
<p style="margin: 0cm 0cm 0pt"><span><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span>&lt;Connector className="org.apache.coyote.tomcat4.CoyoteConnector"</span></span></span></span></span></span></font></span></p>
<p style="margin: 0cm 0cm 0pt"><span><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>port="8009" minProcessors="5" maxProcessors="75"</span></span></span></span></span></span></font></span></p>
<p style="margin: 0cm 0cm 0pt"><span><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>enableLookups="true" redirectPort="8443"</span></span></span></span></span></span></font></span></p>
<p style="margin: 0cm 0cm 0pt"><span><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>acceptCount="10" debug="0" connectionTimeout="20000"</span></span></span></span></span></span></font></span></p>
<p style="margin: 0cm 0cm 0pt"><span><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>useURIValidationHack="false"</span></span></span></span></span></span></font></span></p>
<p style="margin: 0cm 0cm 0pt"><span><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/&gt;</span></span></span></span></span></span></font></span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21.75pt"><span><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt">&lt;<span style="color: blue">Engine</span> name="Standalone" <span style="color: blue">defaultHost</span>="localhost" debug="0"&gt;</span></span></span></span></span></span></span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21.75pt"><span><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt">&lt;!--</span></span></span></span></span></span></span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21.75pt"><span><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt">&lt;<span style="color: blue">Valve</span> <span style="color: blue">className</span>="org.apache.catalina.valves.RequestDumperValve"/&gt;</span></span></span></span></span></span></span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21.75pt"><span><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt">--&gt;</span></span></span></span></span></span></span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21.75pt"><span><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&lt;Logger className="org.apache.catalina.logger.FileLogger"</span></span></span></span></span></span></font></span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21.75pt"><span><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>prefix="catalina_log." suffix=".txt"</span></span></span></span></span></span></font></span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21.75pt"><span><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>timestamp="true"/&gt;</span></span></span></span></span></span></font></span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21.75pt"><span><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&lt;<span style="color: blue">Realm</span> <span style="color: blue">className</span>="org.apache.catalina.realm.UserDatabaseRealm"</span></span></span></span></span></span></font></span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21.75pt"><span><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>debug="0" resourceName="UserDatabase"/&gt;</span></span></span></span></span></span></font></span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21.75pt"><span><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&lt;<span style="color: blue">Host</span> <span style="color: blue">name</span>="localhost" debug="0" <span style="color: blue">appBase</span>="webapps" </span></span></span></span></span></span></font></span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21.75pt"><span><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: blue">unpackWARs</span>="true" autoDeploy="true"&gt;</span></span></span></span></span></span></font></span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21.75pt"><span><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&lt;<span style="color: blue">Logger</span> <span style="color: blue">className</span>="org.apache.catalina.logger.FileLogger"</span></span></span></span></span></span></font></span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21.75pt"><span><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>directory="logs"<span>&nbsp;&nbsp;</span><span style="color: blue">prefix</span>="localhost_log." <span style="color: blue">suffix</span>=".txt"</span></span></span></span></span></span></font></span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21.75pt"><span><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: blue">timestamp</span>="true"/&gt;</span></span></span></span></span></span></font></span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21.75pt"><span><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt">&lt;<span style="color: blue">Context</span> <span style="color: blue">path</span>="/gdqy" <span style="color: blue">reloadable</span>="true" docBase="D:/gdqy/ept" debug="0" </span></span></span></span></span></span></span></p>
<p style="margin: 0cm 0cm 0pt 41.25pt; text-indent: 21.75pt"><span><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt">crossContext="true"/&gt;</span></span></span></span></span></span></span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21.75pt"><span><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&lt;/Host&gt;</span></span></span></span></span></span></font></span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21.75pt"><span><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt">&lt;/Engine&gt;</span></span></span></span></span></span></span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21.75pt"><span><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>&nbsp;&nbsp;</span>&lt;/Service&gt;</span></span></span></span></span></span></font></span></p>
<p style="margin: 0cm 0cm 0pt"><span><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt">&lt;/Server&gt;</span></span></span></span></span></span></span></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>1</span><span>、</span><span>server port</span><span>：指定一个端口，这个端口负责监听关闭</span><span>tomcat</span><span>的请求</span></span></span></span></span></span></span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>2</span><span>、</span><span>shut down</span><span>：指定向端口发送的命令字符串</span></span></span></span></span></span></span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>3</span><span>、</span><span>service name</span><span>：指定</span><span>service</span><span>的名字</span></span></span></span></span></span></span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>4</span><span>、</span><span>Connector</span><span>：</span><span>(</span><span>表示客户端和</span><span>service</span><span>之间的连接</span><span>)</span></span></span></span></span></span></span></font></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 15.75pt"><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>port </span><span>指定服务器端要创建的端口号，并在这个断口监听来自客户端的请求</span></span></span></span></span></span></span></font></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 15.75pt"><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>minProcessors</span><span>：服务器启动时创建的处理请求的线程数</span> </span></span></span></span></span></span></font></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 15.75pt"><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>maxProcessors</span><span>：最大可以创建的处理请求的线程数</span> </span></span></span></span></span></span></font></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 15.75pt"><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>enableLookups</span><span>：如果为</span><span>true</span><span>，则可以通过调用</span><span>request.getRemoteHost()</span><span>进行</span><span>DNS</span><span>查询来得到远程客户端的实际主机名，若为</span><span>false</span><span>则不进行</span><span>DNS</span><span>查询，而是返回其</span><span>ip</span><span>地址</span> </span></span></span></span></span></span></font></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 15.75pt"><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>redirectPort</span><span>：指定服务器正在处理</span><span>http</span><span>请求时收到了一个</span><span>SSL</span><span>传输请求后重定向的端口号</span> </span></span></span></span></span></span></font></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 15.75pt"><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>acceptCount </span><span>指定当所有可以使用的处理请求的线程数都被使用时，可以放到处理队列中的请求数，超过这个数的请求将不予处理</span> </span></span></span></span></span></span></font></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 15.75pt"><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>connectionTimeout </span><span>指定超时的时间数</span><span>(</span><span>以毫秒为单位</span></span></span></span></span></span></span></font><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>) <br />
5</span><span>、</span><span>Engine</span><span>：</span><span>(</span><span>表示指定</span><span>service</span><span>中的请求处理机，接收和处理来自</span><span>Connector</span><span>的请求</span><span>) </span></span></span></span></span></span></span></font></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 15.75pt"><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>defaultHost</span><span>：指定缺省的处理请求的主机名，它至少与其中的一个</span><span>host</span><span>元素的</span><span>name</span><span>属性值是一样的</span></span></span></span></span></span></span></font><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span> <br />
6</span><span>、</span><span>Context</span><span>：</span><span>(</span><span>表示一个</span><span>web</span><span>应用程序，通常为</span><span>WAR</span><span>文件，关于</span><span>WAR</span><span>的具体信息见</span><span>servlet</span><span>规范</span><span>) docBase </span><span>应用程序的路径或者是</span><span>WAR</span><span>文件存放的路径</span></span></span></span></span></span></span></font></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 15.75pt"><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>path</span><span>：表示此</span><span>web</span><span>应用程序的</span><span>url</span><span>的前缀，这样请求的</span><span>url</span><span>为</span><span><a href="http://localhost:8080/path/****"><span style="color: windowtext">http://localhost:8080/path/****</span></a></span></span></span></span></span></span></span></font></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 15.75pt"><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>reloadable</span><span>：这个属性非常重要，如果为</span><span>true</span><span>，则</span><span>tomcat</span><span>会自动检测应用程序的</span><span>/WEB-INF/lib </span><span>和</span><span>/WEB-INF/classes</span><span>目录的变化，自动装载新的应用程序，我们可以在不重起</span><span>tomcat</span><span>的情况下改变应用程序</span> </span></span></span></span></span></span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>7</span><span>、</span><span>host</span><span>：</span><span>(</span><span>表示一个虚拟主机</span><span>) </span></span></span></span></span></span></span></font></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 15.75pt"><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>name</span><span>：指定主机名</span> </span></span></span></span></span></span></font></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 15.75pt"><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>appBase</span><span>：应用程序基本目录，即存放应用程序的目录</span> </span></span></span></span></span></span></font></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 15.75pt"><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>unpackWARs</span><span>：如果为</span><span>true</span><span>，则</span><span>tomcat</span><span>会自动将</span><span>WAR</span><span>文件解压，否则不解压，直接从</span><span>WAR</span><span>文件中运行应用程序</span> </span></span></span></span></span></span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>8</span><span>、</span><span>Logger</span><span>：</span><span>(</span><span>表示日志，调试和错误信息</span><span>) </span></span></span></span></span></span></span></font></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 15.75pt"><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>className </span><span>指定</span><span>logger</span><span>使用的类名，此类必须实现</span><span>org.apache.catalina.Logger </span><span>接口</span> </span></span></span></span></span></span></font></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 15.75pt"><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>prefix</span><span>：指定</span><span>log</span><span>文件的前缀</span> </span></span></span></span></span></span></font></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 15.75pt"><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>suffix</span><span>：指定</span><span>log</span><span>文件的后缀</span> </span></span></span></span></span></span></font></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 15.75pt"><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>timestamp</span><span>：如果为</span><span>true</span><span>，则</span><span>log</span><span>文件名中要加入时间，如下例</span></span></span></span></span></span></span></font><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>:localhost_log.<chsdate year="2001" month="10" day="4" isrocdate="False" islunardate="False"></chsdate>2001-10-04.txt <br />
9</span><span>、</span><span>Realm</span><span>：</span><span>(</span><span>表示存放用户名，密码及</span><span>role</span><span>的数据库</span><span>) </span></span></span></span></span></span></span></font></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 15.75pt"><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>className</span><span>：指定</span><span>Realm</span><span>使用的类名，此类必须实现</span><span>org.apache.catalina.Realm</span><span>接口</span> </span></span></span></span></span></span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>10</span><span>、</span><span>Valve</span><span>：</span><span>(</span><span>功能与</span><span>Logger</span><span>差不多，其</span><span>prefix</span><span>和</span><span>suffix</span><span>属性解释和</span><span>Logger </span><span>中的一样</span><span>) </span></span></span></span></span></span></span></font></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 15.75pt"><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>className</span><span>：指定</span><span>Valve</span><span>使用的类名，如用</span><span>org.apache.catalina.valves.AccessLogValve</span><span>类可以记录应用程序的访问信息</span></span></span></span></span></span></span></font><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span> <br />
<br />
11</span><span>、</span><span>directory</span><span>：指定</span><span>log</span><span>文件存放的位置</span> </span></span></span></span></span></span></font></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 15.75pt"><font size="2"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><span>pattern </span><span>有两个值，</span><span>common</span><span>方式记录远程主机名或</span><span>ip</span><span>地址，用户名，日期，第一行请求的字符串，</span><span>HTTP</span><span>响应代码，发送的字节数。</span><span>combined</span><span>方式比</span><span>common</span><span>方式记录的值更多。</span></span></span></span></span></span></span></font></p>
<font size="2"><span>
<p style="margin: 0cm 0cm 0pt; text-indent: 15.75pt; mso-char-indent-count: 1.5"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt"><font color="#ff0000">另附</font><font color="#ff0000" size="2"><span>tomcat5中server.xml配置</span></font></span></span></span></span></span></span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 15.75pt; mso-char-indent-count: 1.5"><span style="font-size: 10pt"><span><span style="font-size: 14pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt">&lt;!-- Example Server Configuration File --&gt;<br />
&lt;!-- Tomcat服务器配置示例文件 --&gt;</span></span></span></span></span></span></span></p>
<p><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt">&lt;!-- Note that component elements are nested corresponding to their<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; parent-child relationships with each other --&gt;<br />
&lt;!-- 注意，这些组件的构成是根据相互之间的父子关系进行嵌套的。--&gt;</span></span></span></span></span></span></p>
<p><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt">&lt;!-- A "Server" is a singleton element that represents the entire JVM,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; which may contain one or more "Service" instances. The Server<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; listens for a shutdown command on the indicated port.</span></span></span></span></span></span></p>
<p><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Note: A "Server" is not itself a "Container", so you may not<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; define subcomponents such as "Valves" or "Loggers" at this level.<br />
--&gt;<br />
&lt;!-- 一个&#8220;Server&#8221;是一个提供完整的JVM的独立组件，它可以包含一个或多个<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8220;Service&#8221;实例。服务器在指定的端口上监听shutdown命令。<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 注意：一个&#8220;Server&#8221;自身不是一个&#8220;Container&#8221;（容器），因此在这里你<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 不可以定义诸如&#8220;Valves&#8221;或者&#8220;Loggers&#8221;子组件<br />
--&gt;</span></span></span></span></span></span></p>
<p><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt">&lt;Server port="8005" shutdown="SHUTDOWN" debug="0"&gt;</span></span></span></span></span></span></p>
<p><br />
<span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt">&nbsp;&nbsp; &lt;!-- Comment these entries out to disable JMX MBeans support --&gt;<br />
&nbsp;&nbsp; &lt;!-- 这些指令组件关闭JMX MBeans支持 --&gt;<br />
<br />
&nbsp;&nbsp; &lt;!-- You may also configure custom components (e.g. Valves/Realms) by<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; including your own mbean-descriptor file(s), and setting the<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "descriptors" attribute to point to a ';' seperated list of paths<br />
&nbsp;&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;&nbsp; e.g. descriptors="/com/myfirm/mypackage/mbean-descriptor.xml"<br />
&nbsp;&nbsp; --&gt;<br />
&nbsp;&nbsp; &lt;!-- 你也可以通过包含你自己的mbean描述文件配置自定义的组件，然后设置<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8220;descriptors&#8221;属性为以&#8220;；&#8221;为分隔的文件名列表严将它添加到默认列表<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 中，例如：descriptors="/com/myfirm/mypackage/mbean-descriptor.xml"。<br />
--&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; &lt;Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; debug="0"/&gt;<br />
&nbsp;&nbsp; &lt;Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; debug="0"/&gt;</span></span></span></span></span></span></p>
<p><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt">&nbsp;&nbsp; &lt;!-- Global JNDI resources --&gt;<br />
&nbsp;&nbsp; &lt;!-- 全局JNDI资源 --&gt;<br />
&nbsp;&nbsp; &lt;GlobalNamingResources&gt;</span></span></span></span></span></span></p>
<p><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- Test entry for demonstration purposes --&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 出于示例目的的测试入口 --&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;Environment name="simpleValue" type="java.lang.Integer" value="30"/&gt;</span></span></span></span></span></span></p>
<p><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- Editable user database that can also be used by<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UserDatabaseRealm to authenticate users --&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 可编辑的，用来通过UserDatabaseRealm认证用户的用户数据库 --&gt;<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;Resource name="UserDatabase" auth="Container"<br />
&nbsp;&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;&nbsp; description="User database that can be updated and saved"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Resource&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;ResourceParams name="UserDatabase"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;parameter&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;factory&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;org.apache.catalina.users.MemoryUserDatabaseFactory&lt;/value&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/parameter&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;parameter&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;pathname&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;conf/tomcat-users.xml&lt;/value&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/parameter&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/ResourceParams&gt;</span></span></span></span></span></span></p>
<p><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt">&nbsp;&nbsp; &lt;/GlobalNamingResources&gt;</span></span></span></span></span></span></p>
<p><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt">&nbsp;&nbsp; &lt;!-- A "Service" is a collection of one or more "Connectors" that share<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a single "Container" (and therefore the web applications visible<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; within that Container). Normally, that Container is an "Engine",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; but this is not required.</span></span></span></span></span></span></p>
<p><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><span style="font-size: 10pt">&nbsp;&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;&nbsp; define subcomponents such as "Valves" or "Loggers" at this level.<br />
&nbsp;&nbsp;&nbsp; --&gt;<br />
&nbsp;&nbsp; &lt;!-- 一个&#8220;Service&#8221;是一个或多个共用一个单独&#8220;Container&#8221;(容器)的&#8220;Connectors&#8221;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 组合（因此，应用程序在容器中可见）。通常，这个容器是一个&#8220;Engine&#8221;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; （引擎），但这不是必须的。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 注意：一个&#8220;Service&#8221;自身不是一个容器，因此，在这个级别上你不可定义<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 诸如&#8220;Valves&#8221;或&#8220;Loggers&#8221;子组件。<br />
&nbsp;&nbsp; --&gt;</span></span></span></span></span></span></p>
</span></font>
<img src ="http://www.blogjava.net/DreamFight/aggbug/247853.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DreamFight/" target="_blank">DreamFight</a> 2008-12-23 09:21 <a href="http://www.blogjava.net/DreamFight/articles/247853.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat 服务器server.xml的关键参数配置（三）</title><link>http://www.blogjava.net/DreamFight/articles/247852.html</link><dc:creator>DreamFight</dc:creator><author>DreamFight</author><pubDate>Tue, 23 Dec 2008 01:19:00 GMT</pubDate><guid>http://www.blogjava.net/DreamFight/articles/247852.html</guid><wfw:comment>http://www.blogjava.net/DreamFight/comments/247852.html</wfw:comment><comments>http://www.blogjava.net/DreamFight/articles/247852.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DreamFight/comments/commentRss/247852.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DreamFight/services/trackbacks/247852.html</trackback:ping><description><![CDATA[需要做的就是：按照你的需求配置Tomcat，只要你正确配置，Tomcat一般都能适合你的要求。下面是一系列关于Tomcat的配置技巧，这些技巧源自于我的书：《Tomcat权威指南》，希望对你有所帮助。 Jason Brittain <br />
<br />
　　<strong>1． 配置系统管理</strong>（Admin Web Application） <br />
<br />
　　大多数商业化的J2EE服务器都提供一个功能强大的管理界面，且大都采用易于理解的Web应用界面。Tomcat按照自己的方式，同样提供一个成熟的管理工具，并且丝毫不逊于那些商业化的竞争对手。Tomcat的Admin Web Application最初在4.1版本时出现，当时的功能包括管理context、data source、user和group等。当然也可以管理像初始化参数，user、group、role的多种数据库管理等。在后续的版本中，这些功能将得到很大的扩展，但现有的功能已经非常实用了。 <br />
<br />
　　Admin Web Application被定义在自动部署文件：CATALINA_BASE/webapps/admin.xml 。 <br />
　　（译者注：CATALINA_BASE即tomcat安装目录下的server目录） <br />
<br />
　　你必须编辑这个文件，以确定Context中的docBase参数是绝对路径。也就是说，CATALINA_BASE/webapps/admin.xml 的路径是绝对路径。作为另外一种选择，你也可以删除这个自动部署文件，而在server.xml文件中建立一个Admin Web Application的context，效果是一样的。你不能管理Admin Web Application这个应用，换而言之，除了删除CATALINA_BASE/webapps/admin.xml ，你可能什么都做不了。 <br />
<br />
　　如果你使用UserDatabaseRealm（默认），你将需要添加一个user以及一个role到CATALINA_BASE/conf/tomcat-users.xml 文件中。你编辑这个文件，添加一个名叫&#8220;admin&#8221;的role 到该文件中，如下： <br />
<br />
<table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1">
    <tbody>
        <tr>
            <td>＜role name="admin"/＞</td>
        </tr>
    </tbody>
</table>
<br />
　　你同样需要有一个用户，并且这个用户的角色是&#8220;admin&#8221;。象存在的用户那样，添加一个用户（改变密码使其更加安全）： <br />
<br />
<table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1">
    <tbody>
        <tr>
            <td>＜user name="admin" password="deep_dark_secret" roles="admin"/＞</td>
        </tr>
    </tbody>
</table>
<br />
　　当你完成这些步骤后，请重新启动Tomcat，访问http://localhost:8080/admin，你将看到一个登录界面。Admin Web Application采用基于容器管理的安全机制，并采用了Jakarta Struts框架。一旦你作为&#8220;admin&#8221;角色的用户登录管理界面，你将能够使用这个管理界面配置Tomcat。 <br />
<br />
　　<strong>2．配置应用管理</strong>（Manager Web Application） <br />
<br />
　　Manager Web Application让你通过一个比Admin Web Application更为简单的用户界面，执行一些简单的Web应用任务。 <br />
<br />
　　Manager Web Application被被定义在一个自动部署文件中： <br />
<br />
<table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1">
    <tbody>
        <tr>
            <td>CATALINA_BASE/webapps/manager.xml 。</td>
        </tr>
    </tbody>
</table>
<br />
　　你必须编辑这个文件，以确保context的docBase参数是绝对路径，也就是说CATALINA_HOME/server/webapps/manager的绝对路径。 <br />
　　（译者注：CATALINA_HOME即tomcat安装目录） <br />
<br />
　　如果你使用的是UserDatabaseRealm，那么你需要添加一个角色和一个用户到CATALINA_BASE/conf/tomcat-users.xml文件中。接下来，编辑这个文件，添加一个名为&#8220;manager&#8221;的角色到该文件中： <br />
<br />
<table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1">
    <tbody>
        <tr>
            <td>＜role name=&#8221;manager&#8221;＞</td>
        </tr>
    </tbody>
</table>
<br />
　　你同样需要有一个角色为&#8220;manager&#8221;的用户。像已经存在的用户那样，添加一个新用户（改变密码使其更加安全）： <br />
<br />
<table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1">
    <tbody>
        <tr>
            <td>＜user name="manager" password="deep_dark_secret" roles="manager"/＞</td>
        </tr>
    </tbody>
</table>
<br />
　　然后重新启动Tomcat，访问http://localhost/manager/list，将看到一个很朴素的文本型管理界面，或者访问http://localhost/manager/html/list，将看到一个HMTL的管理界面。不管是哪种方式都说明你的Manager Web Application现在已经启动了。 <br />
<br />
　　Manager application让你可以在没有系统管理特权的基础上，安装新的Web应用，以用于测试。如果我们有一个新的web应用位于/home/user/hello下在，并且想把它安装到 /hello下，为了测试这个应用，我们可以这么做，在第一个文件框中输入&#8220;/hello&#8221;（作为访问时的path），在第二个文本框中输入&#8220;file:/home/user/hello&#8221;（作为Config URL）。 <br />
<br />
　　Manager application还允许你停止、重新启动、移除以及重新部署一个web应用。停止一个应用使其无法被访问，当有用户尝试访问这个被停止的应用时，将看到一个503的错误??&#8220;503 - This application is not currently available&#8221;。 <br />
<br />
　　移除一个web应用，只是指从Tomcat的运行拷贝中删除了该应用，如果你重新启动Tomcat，被删除的应用将再次出现（也就是说，移除并不是指从硬盘上删除）。 <br />
<strong>3．部署一个web应用 <br />
<br />
</strong>　　有两个办法可以在系统中部署web服务。 <br />
<br />
　　1＞ 拷贝你的WAR文件或者你的web应用文件夹（包括该web的所有内容）到$CATALINA_BASE/webapps目录下。 <br />
<br />
　　2＞ 为你的web服务建立一个只包括context内容的XML片断文件，并把该文件放到$CATALINA_BASE/webapps目录下。这个web应用本身可以存储在硬盘上的任何地方。 <br />
<br />
　　如果你有一个WAR文件，你若想部署它，则只需要把该文件简单的拷贝到CATALINA_BASE/webapps目录下即可，文件必须以&#8220;.war&#8221;作为扩展名。一旦Tomcat监听到这个文件，它将（缺省的）解开该文件包作为一个子目录，并以WAR文件的文件名作为子目录的名字。接下来，Tomcat将在内存中建立一个context，就好象你在server.xml文件里建立一样。当然，其他必需的内容，将从server.xml中的DefaultContext获得。 <br />
<br />
　　部署web应用的另一种方式是写一个Context XML片断文件，然后把该文件拷贝到CATALINA_BASE/webapps目录下。一个Context片断并非一个完整的XML文件，而只是一个context元素，以及对该应用的相应描述。这种片断文件就像是从server.xml中切取出来的context元素一样，所以这种片断被命名为&#8220;context片断&#8221;。 <br />
<br />
　　举个例子，如果我们想部署一个名叫MyWebApp.war的应用，该应用使用realm作为访问控制方式，我们可以使用下面这个片断： <br />
<br />
<table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1">
    <tbody>
        <tr>
            <td>＜!-- <br />
            Context fragment for deploying MyWebApp.war <br />
            --＞ <br />
            ＜Context path="/demo" docBase="webapps/MyWebApp.war" <br />
            debug="0" privileged="true"＞ <br />
            ＜Realm className="org.apache.catalina.realm.UserDatabaseRealm" <br />
            resourceName="UserDatabase"/＞ <br />
            ＜/Context＞</td>
        </tr>
    </tbody>
</table>
<br />
　　把该片断命名为&#8220;MyWebApp.xml&#8221;，然后拷贝到CATALINA_BASE/webapps目录下。 <br />
<br />
　　这种context片断提供了一种便利的方法来部署web应用，你不需要编辑server.xml，除非你想改变缺省的部署特性，安装一个新的web应用时不需要重启动Tomcat。 <br />
<br />
　　<strong>4．配置虚拟主机</strong>（Virtual Hosts） <br />
<br />
　　关于server.xml中&#8220;Host&#8221;这个元素，只有在你设置虚拟主机的才需要修改。虚拟主机是一种在一个web服务器上服务多个域名的机制，对每个域名而言，都好象独享了整个主机。实际上，大多数的小型商务网站都是采用虚拟主机实现的，这主要是因为虚拟主机能直接连接到Internet并提供相应的带宽，以保障合理的访问响应速度，另外虚拟主机还能提供一个稳定的固定IP。 <br />
<br />
　　基于名字的虚拟主机可以被建立在任何web服务器上，建立的方法就是通过在域名服务器（DNS）上建立IP地址的别名，并且告诉web服务器把去往不同域名的请求分发到相应的网页目录。因为这篇文章主要是讲Tomcat，我们不准备介绍在各种操作系统上设置DNS的方法，如果你在这方面需要帮助，请参考《DNS and Bind》一书，作者是Paul Albitz and Cricket Liu (O'Reilly)。为了示范方便，我将使用一个静态的主机文件，因为这是测试别名最简单的方法。 <br />
<br />
　　在Tomcat中使用虚拟主机，你需要设置DNS或主机数据。为了测试，为本地IP设置一个IP别名就足够了，接下来，你需要在server.xml中添加几行内容，如下： <br />
<br />
<table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1">
    <tbody>
        <tr>
            <td>＜Server port="8005" shutdown="SHUTDOWN" debug="0"＞ <br />
            ＜Service name="Tomcat-Standalone"＞ <br />
            ＜Connector className="org.apache.coyote.tomcat4.CoyoteConnector" <br />
            port="8080" minProcessors="5" maxProcessors="75" <br />
            enableLookups="true" redirectPort="8443"/＞ <br />
            ＜Connector className="org.apache.coyote.tomcat4.CoyoteConnector" <br />
            port="8443" minProcessors="5" maxProcessors="75" <br />
            acceptCount="10" debug="0" scheme="https" secure="true"/＞ <br />
            ＜Factory className="org.apache.coyote.tomcat4.CoyoteServerSocketFactory" <br />
            clientAuth="false" protocol="TLS" /＞ <br />
            ＜/Connector＞ <br />
            ＜Engine name="Standalone" defaultHost="localhost" debug="0"＞ <br />
            ＜!-- This Host is the default Host --＞ <br />
            ＜Host name="localhost" debug="0" appBase="webapps" <br />
            unpackWARs="true" autoDeploy="true"＞ <br />
            ＜Context path="" docBase="ROOT" debug="0"/＞ <br />
            ＜Context path="/orders" docBase="/home/ian/orders" debug="0" <br />
            reloadable="true" crossContext="true"＞ <br />
            ＜/Context＞ <br />
            ＜/Host＞ <br />
            <br />
            ＜!-- This Host is the first "Virtual Host": http://www.example.com/ --＞ <br />
            ＜Host name="www.example.com" appBase="/home/example/webapp"＞ <br />
            ＜Context path="" docBase="."/＞ <br />
            ＜/Host＞ <br />
            <br />
            ＜/Engine＞ <br />
            ＜/Service＞ <br />
            ＜/Server＞</td>
        </tr>
    </tbody>
</table>
<br />
　　Tomcat的server.xml文件，在初始状态下，只包括一个虚拟主机，但是它容易被扩充到支持多个虚拟主机。在前面的例子中展示的是一个简单的server.xml版本，其中粗体部分就是用于添加一个虚拟主机。每一个Host元素必须包括一个或多个context元素，所包含的context元素中必须有一个是默认的context，这个默认的context的显示路径应该为空（例如，path=&#8221;&#8221;）。<br />
　<strong>5．配置基础验证</strong>（Basic Authentication） <br />
<br />
　　容器管理验证方法控制着当用户访问受保护的web应用资源时，如何进行用户的身份鉴别。当一个web应用使用了Basic Authentication（BASIC参数在web.xml文件中auto-method元素中设置），而有用户访问受保护的web应用时，Tomcat将通过HTTP Basic Authentication方式，弹出一个对话框，要求用户输入用户名和密码。在这种验证方法中，所有密码将被以64位的编码方式在网络上传输。 <br />
<br />
　　注意：使用Basic Authentication通过被认为是不安全的，因为它没有强健的加密方法，除非在客户端和服务器端都使用HTTPS或者其他密码加密码方式（比如，在一个虚拟私人网络中）。若没有额外的加密方法，网络管理员将能够截获（或滥用）用户的密码。但是，如果你是刚开始使用Tomcat，或者你想在你的web应用中测试一下基于容器的安全管理，Basic Authentication还是非常易于设置和使用的。只需要添加＜security-constraint＞和＜login-config＞两个元素到你的web应用的web.xml文件中，并且在CATALINA_BASE/conf/tomcat-users.xml 文件中添加适当的＜role＞和＜user＞即可，然后重新启动Tomcat。 <br />
<br />
　　下面例子中的web.xml摘自一个俱乐部会员网站系统，该系统中只有member目录被保护起来，并使用Basic Authentication进行身份验证。请注意，这种方式将有效的代替Apache web服务器中的.htaccess文件。 <br />
<br />
<table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1">
    <tbody>
        <tr>
            <td>＜!-- <br />
            Define the Members-only area, by defining <br />
            a "Security Constraint" on this Application, and <br />
            mapping it to the subdirectory (URL) that we want <br />
            to restrict. <br />
            --＞ <br />
            ＜security-constraint＞ <br />
            ＜web-resource-collection＞ <br />
            ＜web-resource-name＞ <br />
            Entire Application <br />
            ＜/web-resource-name＞ <br />
            ＜url-pattern＞/members/*＜/url-pattern＞ <br />
            ＜/web-resource-collection＞ <br />
            ＜auth-constraint＞ <br />
            ＜role-name＞member＜/role-name＞ <br />
            ＜/auth-constraint＞ <br />
            ＜/security-constraint＞ <br />
            ＜!-- Define the Login Configuration for this Application --＞ <br />
            ＜login-config＞ <br />
            ＜auth-method＞BASIC＜/auth-method＞ <br />
            ＜realm-name＞My Club Members-only Area＜/realm-name＞ <br />
            ＜/login-config＞</td>
        </tr>
    </tbody>
</table>
<br />
　　<strong>6．配置单点登录</strong>（Single Sign-On） <br />
<br />
　　一旦你设置了realm和验证的方法，你就需要进行实际的用户登录处理。一般说来，对用户而言登录系统是一件很麻烦的事情，你必须尽量减少用户登录验证的次数。作为缺省的情况，当用户第一次请求受保护的资源时，每一个web应用都会要求用户登录。如果你运行了多个web应用，并且每个应用都需要进行单独的用户验证，那这看起来就有点像你在与你的用户搏斗。用户们不知道怎样才能把多个分离的应用整合成一个单独的系统，所有他们也就不知道他们需要访问多少个不同的应用，只是很迷惑，为什么总要不停的登录。 <br />
<br />
　　Tomcat 4的&#8220;single sign-on&#8221;特性允许用户在访问同一虚拟主机下所有web应用时，只需登录一次。为了使用这个功能，你只需要在Host上添加一个SingleSignOn Valve元素即可，如下所示： <br />
<br />
<table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1">
    <tbody>
        <tr>
            <td>＜Valve className="org.apache.catalina.authenticator.SingleSignOn" <br />
            debug="0"/＞</td>
        </tr>
    </tbody>
</table>
<br />
　　在Tomcat初始安装后，server.xml的注释里面包括SingleSignOn Valve配置的例子，你只需要去掉注释，即可使用。那么，任何用户只要登录过一个应用，则对于同一虚拟主机下的所有应用同样有效。 <br />
<br />
　　使用single sign-on valve有一些重要的限制： <br />
<br />
　　1＞ value必须被配置和嵌套在相同的Host元素里，并且所有需要进行单点验证的web应用（必须通过context元素定义）都位于该Host下。 <br />
<br />
　　2＞ 包括共享用户信息的realm必须被设置在同一级Host中或者嵌套之外。 <br />
<br />
　　3＞ 不能被context中的realm覆盖。 <br />
<br />
　　4＞ 使用单点登录的web应用最好使用一个Tomcat的内置的验证方式（被定义在web.xml中的＜auth-method＞中），这比自定义的验证方式强，Tomcat内置的的验证方式包括basic、digest、form和client-cert。 <br />
<br />
　　5＞ 如果你使用单点登录，还希望集成一个第三方的web应用到你的网站中来，并且这个新的web应用使用它自己的验证方式，而不使用容器管理安全，那你基本上就没招了。你的用户每次登录原来所有应用时需要登录一次，并且在请求新的第三方应用时还得再登录一次。当然，如果你拥有这个第三方web应用的源码，而你又是一个程序员，你可以修改它，但那恐怕也不容易做。 <br />
<br />
　　6＞ 单点登录需要使用cookies。 <br />
<br />
<strong>　7．配置用户定制目录</strong>（Customized User Directores） <br />
<br />
　　一些站点允许个别用户在服务器上发布网页。例如，一所大学的学院可能想给每一位学生一个公共区域，或者是一个ISP希望给一些web空间给他的客户，但这又不是虚拟主机。在这种情况下，一个典型的方法就是在用户名前面加一个特殊字符（~），作为每位用户的网站，比如： <br />
<br />
<table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1">
    <tbody>
        <tr>
            <td>http://www.cs.myuniversity.edu/~username <br />
            http://members.mybigisp.com/~username</td>
        </tr>
    </tbody>
</table>
<br />
　　Tomcat提供两种方法在主机上映射这些个人网站，主要使用一对特殊的Listener元素。Listener的className属性应该是org.apache.catalina.startup.UserConfig，userClass属性应该是几个映射类之一。如果你的系统是Unix，它将有一个标准的/etc/passwd文件，该文件中的帐号能够被运行中的Tomcat很容易的读取，该文件指定了用户的主目录，使用PasswdUserDatabase 映射类。 <br />
<br />
<table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1">
    <tbody>
        <tr>
            <td>＜Listener className="org.apache.catalina.startup.UserConfig" <br />
            directoryName="public_html" <br />
            userClass="org.apache.catalina.startup.PasswdUserDatabase"/＞</td>
        </tr>
    </tbody>
</table>
<br />
　　web文件需要放置在像/home/users/ian/public_html 或者 /users/jbrittain/public_html一样的目录下面。当然你也可以改变public_html 到其他任何子目录下。 <br />
<br />
　　实际上，这个用户目录根本不一定需要位于用户主目录下里面。如果你没有一个密码文件，但你又想把一个用户名映射到公共的像/home一样目录的子目录里面，则可以使用HomesUserDatabase类。 <br />
<br />
<table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1">
    <tbody>
        <tr>
            <td>＜Listener className="org.apache.catalina.startup.UserConfig" <br />
            directoryName="public_html" homeBase="/home" <br />
            userClass="org.apache.catalina.startup.HomesUserDatabase"/＞</td>
        </tr>
    </tbody>
</table>
<br />
　　这样一来，web文件就可以位于像/home/ian/public_html 或者 /home/jasonb/public_html一样的目录下。这种形式对Windows而言更加有利，你可以使用一个像c:\home这样的目录。 <br />
<br />
　　这些Listener元素，如果出现，则必须在Host元素里面，而不能在context元素里面，因为它们都用应用于Host本身。 <br />
<br />
　　<strong>8．在Tomcat中使用CGI脚本 </strong><br />
<br />
　　Tomcat主要是作为Servlet/JSP容器，但它也有许多传统web服务器的性能。支持通用网关接口（Common Gateway Interface，即CGI）就是其中之一，CGI提供一组方法在响应浏览器请求时运行一些扩展程序。CGI之所以被称为通用，是因为它能在大多数程序或脚本中被调用，包括：Perl，Python，awk，Unix shell scripting等，甚至包括Java。当然，你大概不会把一个Java应用程序当作CGI来运行，毕竟这样太过原始。一般而言，开发Servlet总要比CGI具有更好的效率，因为当用户点击一个链接或一个按钮时，你不需要从操作系统层开始进行处理。 <br />
<br />
　　Tomcat包括一个可选的CGI Servlet，允许你运行遗留下来的CGI脚本。 <br />
<br />
　　为了使Tomcat能够运行CGI，你必须做如下几件事： <br />
<br />
　　1. 把servlets-cgi.renametojar （在CATALINA_HOME/server/lib/目录下）改名为servlets-cgi.jar。处理CGI的servlet应该位于Tomcat的CLASSPATH下。 <br />
<br />
　　2. 在Tomcat的CATALINA_BASE/conf/web.xml 文件中，把关于＜servlet-name＞ CGI的那段的注释去掉（默认情况下，该段位于第241行）。 <br />
<br />
　　3. 同样，在Tomcat的CATALINA_BASE/conf/web.xml文件中，把关于对CGI进行映射的那段的注释去掉（默认情况下，该段位于第299行）。注意，这段内容指定了HTML链接到CGI脚本的访问方式。 <br />
<br />
　　4. 你可以把CGI脚本放置在WEB-INF/cgi 目录下（注意，WEB-INF是一个安全的地方，你可以把一些不想被用户看见或基于安全考虑不想暴露的文件放在此处），或者你也可以把CGI脚本放置在context下的其他目录下，并为CGI Servlet调整cgiPathPrefix初始化参数。这就指定的CGI Servlet的实际位置，且不能与上一步指定的URL重名。 <br />
<br />
　　5. 重新启动Tomcat，你的CGI就可以运行了。 <br />
<br />
　　在Tomcat中，CGI程序缺省放置在WEB-INF/cgi目录下，正如前面所提示的那样，WEB-INF目录受保护的，通过客户端的浏览器无法窥探到其中内容，所以对于放置含有密码或其他敏感信息的CGI脚本而言，这是一个非常好的地方。为了兼容其他服务器，尽管你也可以把CGI脚本保存在传统的/cgi-bin目录，但要知道，在这些目录中的文件有可能被网上好奇的冲浪者看到。另外，在Unix中，请确定运行Tomcat的用户有执行CGI脚本的权限。 <br />
<br />
　<strong>9．改变Tomcat中的JSP编译器</strong>（JSP Compiler） <br />
<br />
　　在Tomcat 4.1（或更高版本，大概），JSP的编译由包含在Tomcat里面的Ant程序控制器直接执行。这听起来有一点点奇怪，但这正是Ant有意为之的一部分，有一个API文档指导开发者在没有启动一个新的JVM的情况下，使用Ant。这是使用Ant进行Java开发的一大优势。另外，这也意味着你现在能够在Ant中使用任何javac支持的编译方式，这里有一个关于Apache Ant使用手册的javac page列表。使用起来是容易的，因为你只需要在＜init-param＞ 元素中定义一个名字叫&#8220;compiler&#8221;，并且在value中有一个支持编译的编译器名字，示例如下： <br />
<br />
<table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1">
    <tbody>
        <tr>
            <td>＜servlet＞ <br />
            ＜servlet-name＞jsp＜/servlet-name＞ <br />
            ＜servlet-class＞ <br />
            org.apache.jasper.servlet.JspServlet <br />
            ＜/servlet-class＞ <br />
            ＜init-param＞ <br />
            ＜param-name＞logVerbosityLevel＜/param-name＞ <br />
            ＜param-value＞WARNING＜/param-value＞ <br />
            ＜/init-param＞ <br />
            ＜init-param＞ <br />
            ＜param-name＞compiler＜/param-name＞ <br />
            ＜param-value＞jikes＜/param-value＞ <br />
            ＜/init-param＞ <br />
            ＜load-on-startup＞3＜/load-on-startup＞ <br />
            ＜/servlet＞</td>
        </tr>
    </tbody>
</table>
<br />
　　当然，给出的编译器必须已经安装在你的系统中，并且CLASSPATH可能需要设置，那处决于你选择的是何种编译器。 <br />
<br />
　　<strong>10．限制特定主机访问</strong>（Restricting Access to Specific Hosts） <br />
<br />
　　有时，你可能想限制对Tomcat web应用的访问，比如，你希望只有你指定的主机或IP地址可以访问你的应用。这样一来，就只有那些指定的的客户端可以访问服务的内容了。为了实现这种效果，Tomcat提供了两个参数供你配置：RemoteHostValve 和RemoteAddrValve。 <br />
<br />
　　通过配置这两个参数，可以让你过滤来自请求的主机或IP地址，并允许或拒绝哪些主机/IP。与之类似的，在Apache的httpd文件里有对每个目录的允许/拒绝指定。 <br />
<br />
　　例如你可以把Admin Web application设置成只允许本地访问，设置如下： <br />
<br />
<table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1">
    <tbody>
        <tr>
            <td>＜Context path="/path/to/secret_files" ...＞ <br />
            ＜Valve className="org.apache.catalina.valves.RemoteAddrValve" <br />
            allow="127.0.0.1" deny=""/＞ <br />
            ＜/Context＞</td>
        </tr>
    </tbody>
</table>
<br />
　　如果没有给出允许主机的指定，那么与拒绝主机匹配的主机就会被拒绝，除此之外的都是允许的。与之类似，如果没有给出拒绝主机的指定，那么与允许主机匹配的主机
<img src ="http://www.blogjava.net/DreamFight/aggbug/247852.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DreamFight/" target="_blank">DreamFight</a> 2008-12-23 09:19 <a href="http://www.blogjava.net/DreamFight/articles/247852.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat 服务器server.xml的关键参数配置（二）</title><link>http://www.blogjava.net/DreamFight/articles/247851.html</link><dc:creator>DreamFight</dc:creator><author>DreamFight</author><pubDate>Tue, 23 Dec 2008 01:18:00 GMT</pubDate><guid>http://www.blogjava.net/DreamFight/articles/247851.html</guid><wfw:comment>http://www.blogjava.net/DreamFight/comments/247851.html</wfw:comment><comments>http://www.blogjava.net/DreamFight/articles/247851.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DreamFight/comments/commentRss/247851.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DreamFight/services/trackbacks/247851.html</trackback:ping><description><![CDATA[需要做的就是：按照你的需求配置Tomcat，只要你正确配置，Tomcat一般都能适合你的要求。下面是一系列关于Tomcat的配置技巧，这些技巧源自于我的书：《Tomcat权威指南》，希望对你有所帮助。 Jason Brittain <br />
<br />
　　<strong>1． 配置系统管理</strong>（Admin Web Application） <br />
<br />
　　大多数商业化的J2EE服务器都提供一个功能强大的管理界面，且大都采用易于理解的Web应用界面。Tomcat按照自己的方式，同样提供一个成熟的管理工具，并且丝毫不逊于那些商业化的竞争对手。Tomcat的Admin Web Application最初在4.1版本时出现，当时的功能包括管理context、data source、user和group等。当然也可以管理像初始化参数，user、group、role的多种数据库管理等。在后续的版本中，这些功能将得到很大的扩展，但现有的功能已经非常实用了。 <br />
<br />
　　Admin Web Application被定义在自动部署文件：CATALINA_BASE/webapps/admin.xml 。 <br />
　　（译者注：CATALINA_BASE即tomcat安装目录下的server目录） <br />
<br />
　　你必须编辑这个文件，以确定Context中的docBase参数是绝对路径。也就是说，CATALINA_BASE/webapps/admin.xml 的路径是绝对路径。作为另外一种选择，你也可以删除这个自动部署文件，而在server.xml文件中建立一个Admin Web Application的context，效果是一样的。你不能管理Admin Web Application这个应用，换而言之，除了删除CATALINA_BASE/webapps/admin.xml ，你可能什么都做不了。 <br />
<br />
　　如果你使用UserDatabaseRealm（默认），你将需要添加一个user以及一个role到CATALINA_BASE/conf/tomcat-users.xml 文件中。你编辑这个文件，添加一个名叫&#8220;admin&#8221;的role 到该文件中，如下： <br />
<br />
<table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1">
    <tbody>
        <tr>
            <td>＜role name="admin"/＞</td>
        </tr>
    </tbody>
</table>
<br />
　　你同样需要有一个用户，并且这个用户的角色是&#8220;admin&#8221;。象存在的用户那样，添加一个用户（改变密码使其更加安全）： <br />
<br />
<table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1">
    <tbody>
        <tr>
            <td>＜user name="admin" password="deep_dark_secret" roles="admin"/＞</td>
        </tr>
    </tbody>
</table>
<br />
　　当你完成这些步骤后，请重新启动Tomcat，访问http://localhost:8080/admin，你将看到一个登录界面。Admin Web Application采用基于容器管理的安全机制，并采用了Jakarta Struts框架。一旦你作为&#8220;admin&#8221;角色的用户登录管理界面，你将能够使用这个管理界面配置Tomcat。 <br />
<br />
　　<strong>2．配置应用管理</strong>（Manager Web Application） <br />
<br />
　　Manager Web Application让你通过一个比Admin Web Application更为简单的用户界面，执行一些简单的Web应用任务。 <br />
<br />
　　Manager Web Application被被定义在一个自动部署文件中： <br />
<br />
<table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1">
    <tbody>
        <tr>
            <td>CATALINA_BASE/webapps/manager.xml 。</td>
        </tr>
    </tbody>
</table>
<br />
　　你必须编辑这个文件，以确保context的docBase参数是绝对路径，也就是说CATALINA_HOME/server/webapps/manager的绝对路径。 <br />
　　（译者注：CATALINA_HOME即tomcat安装目录） <br />
<br />
　　如果你使用的是UserDatabaseRealm，那么你需要添加一个角色和一个用户到CATALINA_BASE/conf/tomcat-users.xml文件中。接下来，编辑这个文件，添加一个名为&#8220;manager&#8221;的角色到该文件中： <br />
<br />
<table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1">
    <tbody>
        <tr>
            <td>＜role name=&#8221;manager&#8221;＞</td>
        </tr>
    </tbody>
</table>
<br />
　　你同样需要有一个角色为&#8220;manager&#8221;的用户。像已经存在的用户那样，添加一个新用户（改变密码使其更加安全）： <br />
<br />
<table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1">
    <tbody>
        <tr>
            <td>＜user name="manager" password="deep_dark_secret" roles="manager"/＞</td>
        </tr>
    </tbody>
</table>
<br />
　　然后重新启动Tomcat，访问http://localhost/manager/list，将看到一个很朴素的文本型管理界面，或者访问http://localhost/manager/html/list，将看到一个HMTL的管理界面。不管是哪种方式都说明你的Manager Web Application现在已经启动了。 <br />
<br />
　　Manager application让你可以在没有系统管理特权的基础上，安装新的Web应用，以用于测试。如果我们有一个新的web应用位于/home/user/hello下在，并且想把它安装到 /hello下，为了测试这个应用，我们可以这么做，在第一个文件框中输入&#8220;/hello&#8221;（作为访问时的path），在第二个文本框中输入&#8220;file:/home/user/hello&#8221;（作为Config URL）。 <br />
<br />
　　Manager application还允许你停止、重新启动、移除以及重新部署一个web应用。停止一个应用使其无法被访问，当有用户尝试访问这个被停止的应用时，将看到一个503的错误??&#8220;503 - This application is not currently available&#8221;。 <br />
<br />
　　移除一个web应用，只是指从Tomcat的运行拷贝中删除了该应用，如果你重新启动Tomcat，被删除的应用将再次出现（也就是说，移除并不是指从硬盘上删除）。 <br />
<strong>3．部署一个web应用 <br />
<br />
</strong>　　有两个办法可以在系统中部署web服务。 <br />
<br />
　　1＞ 拷贝你的WAR文件或者你的web应用文件夹（包括该web的所有内容）到$CATALINA_BASE/webapps目录下。 <br />
<br />
　　2＞ 为你的web服务建立一个只包括context内容的XML片断文件，并把该文件放到$CATALINA_BASE/webapps目录下。这个web应用本身可以存储在硬盘上的任何地方。 <br />
<br />
　　如果你有一个WAR文件，你若想部署它，则只需要把该文件简单的拷贝到CATALINA_BASE/webapps目录下即可，文件必须以&#8220;.war&#8221;作为扩展名。一旦Tomcat监听到这个文件，它将（缺省的）解开该文件包作为一个子目录，并以WAR文件的文件名作为子目录的名字。接下来，Tomcat将在内存中建立一个context，就好象你在server.xml文件里建立一样。当然，其他必需的内容，将从server.xml中的DefaultContext获得。 <br />
<br />
　　部署web应用的另一种方式是写一个Context XML片断文件，然后把该文件拷贝到CATALINA_BASE/webapps目录下。一个Context片断并非一个完整的XML文件，而只是一个context元素，以及对该应用的相应描述。这种片断文件就像是从server.xml中切取出来的context元素一样，所以这种片断被命名为&#8220;context片断&#8221;。 <br />
<br />
　　举个例子，如果我们想部署一个名叫MyWebApp.war的应用，该应用使用realm作为访问控制方式，我们可以使用下面这个片断： <br />
<br />
<table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1">
    <tbody>
        <tr>
            <td>＜!-- <br />
            Context fragment for deploying MyWebApp.war <br />
            --＞ <br />
            ＜Context path="/demo" docBase="webapps/MyWebApp.war" <br />
            debug="0" privileged="true"＞ <br />
            ＜Realm className="org.apache.catalina.realm.UserDatabaseRealm" <br />
            resourceName="UserDatabase"/＞ <br />
            ＜/Context＞</td>
        </tr>
    </tbody>
</table>
<br />
　　把该片断命名为&#8220;MyWebApp.xml&#8221;，然后拷贝到CATALINA_BASE/webapps目录下。 <br />
<br />
　　这种context片断提供了一种便利的方法来部署web应用，你不需要编辑server.xml，除非你想改变缺省的部署特性，安装一个新的web应用时不需要重启动Tomcat。 <br />
<br />
　　<strong>4．配置虚拟主机</strong>（Virtual Hosts） <br />
<br />
　　关于server.xml中&#8220;Host&#8221;这个元素，只有在你设置虚拟主机的才需要修改。虚拟主机是一种在一个web服务器上服务多个域名的机制，对每个域名而言，都好象独享了整个主机。实际上，大多数的小型商务网站都是采用虚拟主机实现的，这主要是因为虚拟主机能直接连接到Internet并提供相应的带宽，以保障合理的访问响应速度，另外虚拟主机还能提供一个稳定的固定IP。 <br />
<br />
　　基于名字的虚拟主机可以被建立在任何web服务器上，建立的方法就是通过在域名服务器（DNS）上建立IP地址的别名，并且告诉web服务器把去往不同域名的请求分发到相应的网页目录。因为这篇文章主要是讲Tomcat，我们不准备介绍在各种操作系统上设置DNS的方法，如果你在这方面需要帮助，请参考《DNS and Bind》一书，作者是Paul Albitz and Cricket Liu (O'Reilly)。为了示范方便，我将使用一个静态的主机文件，因为这是测试别名最简单的方法。 <br />
<br />
　　在Tomcat中使用虚拟主机，你需要设置DNS或主机数据。为了测试，为本地IP设置一个IP别名就足够了，接下来，你需要在server.xml中添加几行内容，如下： <br />
<br />
<table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1">
    <tbody>
        <tr>
            <td>＜Server port="8005" shutdown="SHUTDOWN" debug="0"＞ <br />
            ＜Service name="Tomcat-Standalone"＞ <br />
            ＜Connector className="org.apache.coyote.tomcat4.CoyoteConnector" <br />
            port="8080" minProcessors="5" maxProcessors="75" <br />
            enableLookups="true" redirectPort="8443"/＞ <br />
            ＜Connector className="org.apache.coyote.tomcat4.CoyoteConnector" <br />
            port="8443" minProcessors="5" maxProcessors="75" <br />
            acceptCount="10" debug="0" scheme="https" secure="true"/＞ <br />
            ＜Factory className="org.apache.coyote.tomcat4.CoyoteServerSocketFactory" <br />
            clientAuth="false" protocol="TLS" /＞ <br />
            ＜/Connector＞ <br />
            ＜Engine name="Standalone" defaultHost="localhost" debug="0"＞ <br />
            ＜!-- This Host is the default Host --＞ <br />
            ＜Host name="localhost" debug="0" appBase="webapps" <br />
            unpackWARs="true" autoDeploy="true"＞ <br />
            ＜Context path="" docBase="ROOT" debug="0"/＞ <br />
            ＜Context path="/orders" docBase="/home/ian/orders" debug="0" <br />
            reloadable="true" crossContext="true"＞ <br />
            ＜/Context＞ <br />
            ＜/Host＞ <br />
            <br />
            ＜!-- This Host is the first "Virtual Host": http://www.example.com/ --＞ <br />
            ＜Host name="www.example.com" appBase="/home/example/webapp"＞ <br />
            ＜Context path="" docBase="."/＞ <br />
            ＜/Host＞ <br />
            <br />
            ＜/Engine＞ <br />
            ＜/Service＞ <br />
            ＜/Server＞</td>
        </tr>
    </tbody>
</table>
<br />
　　Tomcat的server.xml文件，在初始状态下，只包括一个虚拟主机，但是它容易被扩充到支持多个虚拟主机。在前面的例子中展示的是一个简单的server.xml版本，其中粗体部分就是用于添加一个虚拟主机。每一个Host元素必须包括一个或多个context元素，所包含的context元素中必须有一个是默认的context，这个默认的context的显示路径应该为空（例如，path=&#8221;&#8221;）。<br />
　<strong>5．配置基础验证</strong>（Basic Authentication） <br />
<br />
　　容器管理验证方法控制着当用户访问受保护的web应用资源时，如何进行用户的身份鉴别。当一个web应用使用了Basic Authentication（BASIC参数在web.xml文件中auto-method元素中设置），而有用户访问受保护的web应用时，Tomcat将通过HTTP Basic Authentication方式，弹出一个对话框，要求用户输入用户名和密码。在这种验证方法中，所有密码将被以64位的编码方式在网络上传输。 <br />
<br />
　　注意：使用Basic Authentication通过被认为是不安全的，因为它没有强健的加密方法，除非在客户端和服务器端都使用HTTPS或者其他密码加密码方式（比如，在一个虚拟私人网络中）。若没有额外的加密方法，网络管理员将能够截获（或滥用）用户的密码。但是，如果你是刚开始使用Tomcat，或者你想在你的web应用中测试一下基于容器的安全管理，Basic Authentication还是非常易于设置和使用的。只需要添加＜security-constraint＞和＜login-config＞两个元素到你的web应用的web.xml文件中，并且在CATALINA_BASE/conf/tomcat-users.xml 文件中添加适当的＜role＞和＜user＞即可，然后重新启动Tomcat。 <br />
<br />
　　下面例子中的web.xml摘自一个俱乐部会员网站系统，该系统中只有member目录被保护起来，并使用Basic Authentication进行身份验证。请注意，这种方式将有效的代替Apache web服务器中的.htaccess文件。 <br />
<br />
<table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1">
    <tbody>
        <tr>
            <td>＜!-- <br />
            Define the Members-only area, by defining <br />
            a "Security Constraint" on this Application, and <br />
            mapping it to the subdirectory (URL) that we want <br />
            to restrict. <br />
            --＞ <br />
            ＜security-constraint＞ <br />
            ＜web-resource-collection＞ <br />
            ＜web-resource-name＞ <br />
            Entire Application <br />
            ＜/web-resource-name＞ <br />
            ＜url-pattern＞/members/*＜/url-pattern＞ <br />
            ＜/web-resource-collection＞ <br />
            ＜auth-constraint＞ <br />
            ＜role-name＞member＜/role-name＞ <br />
            ＜/auth-constraint＞ <br />
            ＜/security-constraint＞ <br />
            ＜!-- Define the Login Configuration for this Application --＞ <br />
            ＜login-config＞ <br />
            ＜auth-method＞BASIC＜/auth-method＞ <br />
            ＜realm-name＞My Club Members-only Area＜/realm-name＞ <br />
            ＜/login-config＞</td>
        </tr>
    </tbody>
</table>
<br />
　　<strong>6．配置单点登录</strong>（Single Sign-On） <br />
<br />
　　一旦你设置了realm和验证的方法，你就需要进行实际的用户登录处理。一般说来，对用户而言登录系统是一件很麻烦的事情，你必须尽量减少用户登录验证的次数。作为缺省的情况，当用户第一次请求受保护的资源时，每一个web应用都会要求用户登录。如果你运行了多个web应用，并且每个应用都需要进行单独的用户验证，那这看起来就有点像你在与你的用户搏斗。用户们不知道怎样才能把多个分离的应用整合成一个单独的系统，所有他们也就不知道他们需要访问多少个不同的应用，只是很迷惑，为什么总要不停的登录。 <br />
<br />
　　Tomcat 4的&#8220;single sign-on&#8221;特性允许用户在访问同一虚拟主机下所有web应用时，只需登录一次。为了使用这个功能，你只需要在Host上添加一个SingleSignOn Valve元素即可，如下所示： <br />
<br />
<table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1">
    <tbody>
        <tr>
            <td>＜Valve className="org.apache.catalina.authenticator.SingleSignOn" <br />
            debug="0"/＞</td>
        </tr>
    </tbody>
</table>
<br />
　　在Tomcat初始安装后，server.xml的注释里面包括SingleSignOn Valve配置的例子，你只需要去掉注释，即可使用。那么，任何用户只要登录过一个应用，则对于同一虚拟主机下的所有应用同样有效。 <br />
<br />
　　使用single sign-on valve有一些重要的限制： <br />
<br />
　　1＞ value必须被配置和嵌套在相同的Host元素里，并且所有需要进行单点验证的web应用（必须通过context元素定义）都位于该Host下。 <br />
<br />
　　2＞ 包括共享用户信息的realm必须被设置在同一级Host中或者嵌套之外。 <br />
<br />
　　3＞ 不能被context中的realm覆盖。 <br />
<br />
　　4＞ 使用单点登录的web应用最好使用一个Tomcat的内置的验证方式（被定义在web.xml中的＜auth-method＞中），这比自定义的验证方式强，Tomcat内置的的验证方式包括basic、digest、form和client-cert。 <br />
<br />
　　5＞ 如果你使用单点登录，还希望集成一个第三方的web应用到你的网站中来，并且这个新的web应用使用它自己的验证方式，而不使用容器管理安全，那你基本上就没招了。你的用户每次登录原来所有应用时需要登录一次，并且在请求新的第三方应用时还得再登录一次。当然，如果你拥有这个第三方web应用的源码，而你又是一个程序员，你可以修改它，但那恐怕也不容易做。 <br />
<br />
　　6＞ 单点登录需要使用cookies。 <br />
<br />
<strong>　7．配置用户定制目录</strong>（Customized User Directores） <br />
<br />
　　一些站点允许个别用户在服务器上发布网页。例如，一所大学的学院可能想给每一位学生一个公共区域，或者是一个ISP希望给一些web空间给他的客户，但这又不是虚拟主机。在这种情况下，一个典型的方法就是在用户名前面加一个特殊字符（~），作为每位用户的网站，比如： <br />
<br />
<table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1">
    <tbody>
        <tr>
            <td>http://www.cs.myuniversity.edu/~username <br />
            http://members.mybigisp.com/~username</td>
        </tr>
    </tbody>
</table>
<br />
　　Tomcat提供两种方法在主机上映射这些个人网站，主要使用一对特殊的Listener元素。Listener的className属性应该是org.apache.catalina.startup.UserConfig，userClass属性应该是几个映射类之一。如果你的系统是Unix，它将有一个标准的/etc/passwd文件，该文件中的帐号能够被运行中的Tomcat很容易的读取，该文件指定了用户的主目录，使用PasswdUserDatabase 映射类。 <br />
<br />
<table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1">
    <tbody>
        <tr>
            <td>＜Listener className="org.apache.catalina.startup.UserConfig" <br />
            directoryName="public_html" <br />
            userClass="org.apache.catalina.startup.PasswdUserDatabase"/＞</td>
        </tr>
    </tbody>
</table>
<br />
　　web文件需要放置在像/home/users/ian/public_html 或者 /users/jbrittain/public_html一样的目录下面。当然你也可以改变public_html 到其他任何子目录下。 <br />
<br />
　　实际上，这个用户目录根本不一定需要位于用户主目录下里面。如果你没有一个密码文件，但你又想把一个用户名映射到公共的像/home一样目录的子目录里面，则可以使用HomesUserDatabase类。 <br />
<br />
<table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1">
    <tbody>
        <tr>
            <td>＜Listener className="org.apache.catalina.startup.UserConfig" <br />
            directoryName="public_html" homeBase="/home" <br />
            userClass="org.apache.catalina.startup.HomesUserDatabase"/＞</td>
        </tr>
    </tbody>
</table>
<br />
　　这样一来，web文件就可以位于像/home/ian/public_html 或者 /home/jasonb/public_html一样的目录下。这种形式对Windows而言更加有利，你可以使用一个像c:\home这样的目录。 <br />
<br />
　　这些Listener元素，如果出现，则必须在Host元素里面，而不能在context元素里面，因为它们都用应用于Host本身。 <br />
<br />
　　<strong>8．在Tomcat中使用CGI脚本 </strong><br />
<br />
　　Tomcat主要是作为Servlet/JSP容器，但它也有许多传统web服务器的性能。支持通用网关接口（Common Gateway Interface，即CGI）就是其中之一，CGI提供一组方法在响应浏览器请求时运行一些扩展程序。CGI之所以被称为通用，是因为它能在大多数程序或脚本中被调用，包括：Perl，Python，awk，Unix shell scripting等，甚至包括Java。当然，你大概不会把一个Java应用程序当作CGI来运行，毕竟这样太过原始。一般而言，开发Servlet总要比CGI具有更好的效率，因为当用户点击一个链接或一个按钮时，你不需要从操作系统层开始进行处理。 <br />
<br />
　　Tomcat包括一个可选的CGI Servlet，允许你运行遗留下来的CGI脚本。 <br />
<br />
　　为了使Tomcat能够运行CGI，你必须做如下几件事： <br />
<br />
　　1. 把servlets-cgi.renametojar （在CATALINA_HOME/server/lib/目录下）改名为servlets-cgi.jar。处理CGI的servlet应该位于Tomcat的CLASSPATH下。 <br />
<br />
　　2. 在Tomcat的CATALINA_BASE/conf/web.xml 文件中，把关于＜servlet-name＞ CGI的那段的注释去掉（默认情况下，该段位于第241行）。 <br />
<br />
　　3. 同样，在Tomcat的CATALINA_BASE/conf/web.xml文件中，把关于对CGI进行映射的那段的注释去掉（默认情况下，该段位于第299行）。注意，这段内容指定了HTML链接到CGI脚本的访问方式。 <br />
<br />
　　4. 你可以把CGI脚本放置在WEB-INF/cgi 目录下（注意，WEB-INF是一个安全的地方，你可以把一些不想被用户看见或基于安全考虑不想暴露的文件放在此处），或者你也可以把CGI脚本放置在context下的其他目录下，并为CGI Servlet调整cgiPathPrefix初始化参数。这就指定的CGI Servlet的实际位置，且不能与上一步指定的URL重名。 <br />
<br />
　　5. 重新启动Tomcat，你的CGI就可以运行了。 <br />
<br />
　　在Tomcat中，CGI程序缺省放置在WEB-INF/cgi目录下，正如前面所提示的那样，WEB-INF目录受保护的，通过客户端的浏览器无法窥探到其中内容，所以对于放置含有密码或其他敏感信息的CGI脚本而言，这是一个非常好的地方。为了兼容其他服务器，尽管你也可以把CGI脚本保存在传统的/cgi-bin目录，但要知道，在这些目录中的文件有可能被网上好奇的冲浪者看到。另外，在Unix中，请确定运行Tomcat的用户有执行CGI脚本的权限。 <br />
<br />
　<strong>9．改变Tomcat中的JSP编译器</strong>（JSP Compiler） <br />
<br />
　　在Tomcat 4.1（或更高版本，大概），JSP的编译由包含在Tomcat里面的Ant程序控制器直接执行。这听起来有一点点奇怪，但这正是Ant有意为之的一部分，有一个API文档指导开发者在没有启动一个新的JVM的情况下，使用Ant。这是使用Ant进行Java开发的一大优势。另外，这也意味着你现在能够在Ant中使用任何javac支持的编译方式，这里有一个关于Apache Ant使用手册的javac page列表。使用起来是容易的，因为你只需要在＜init-param＞ 元素中定义一个名字叫&#8220;compiler&#8221;，并且在value中有一个支持编译的编译器名字，示例如下： <br />
<br />
<table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1">
    <tbody>
        <tr>
            <td>＜servlet＞ <br />
            ＜servlet-name＞jsp＜/servlet-name＞ <br />
            ＜servlet-class＞ <br />
            org.apache.jasper.servlet.JspServlet <br />
            ＜/servlet-class＞ <br />
            ＜init-param＞ <br />
            ＜param-name＞logVerbosityLevel＜/param-name＞ <br />
            ＜param-value＞WARNING＜/param-value＞ <br />
            ＜/init-param＞ <br />
            ＜init-param＞ <br />
            ＜param-name＞compiler＜/param-name＞ <br />
            ＜param-value＞jikes＜/param-value＞ <br />
            ＜/init-param＞ <br />
            ＜load-on-startup＞3＜/load-on-startup＞ <br />
            ＜/servlet＞</td>
        </tr>
    </tbody>
</table>
<br />
　　当然，给出的编译器必须已经安装在你的系统中，并且CLASSPATH可能需要设置，那处决于你选择的是何种编译器。 <br />
<br />
　　<strong>10．限制特定主机访问</strong>（Restricting Access to Specific Hosts） <br />
<br />
　　有时，你可能想限制对Tomcat web应用的访问，比如，你希望只有你指定的主机或IP地址可以访问你的应用。这样一来，就只有那些指定的的客户端可以访问服务的内容了。为了实现这种效果，Tomcat提供了两个参数供你配置：RemoteHostValve 和RemoteAddrValve。 <br />
<br />
　　通过配置这两个参数，可以让你过滤来自请求的主机或IP地址，并允许或拒绝哪些主机/IP。与之类似的，在Apache的httpd文件里有对每个目录的允许/拒绝指定。 <br />
<br />
　　例如你可以把Admin Web application设置成只允许本地访问，设置如下： <br />
<br />
<table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1">
    <tbody>
        <tr>
            <td>＜Context path="/path/to/secret_files" ...＞ <br />
            ＜Valve className="org.apache.catalina.valves.RemoteAddrValve" <br />
            allow="127.0.0.1" deny=""/＞ <br />
            ＜/Context＞</td>
        </tr>
    </tbody>
</table>
<br />
　　如果没有给出允许主机的指定，那么与拒绝主机匹配的主机就会被拒绝，除此之外的都是允许的。与之类似，如果没有给出拒绝主机的指定，那么与允许主机匹配的主机就会被允许，除此之外的都是拒绝的。
<img src ="http://www.blogjava.net/DreamFight/aggbug/247851.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DreamFight/" target="_blank">DreamFight</a> 2008-12-23 09:18 <a href="http://www.blogjava.net/DreamFight/articles/247851.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat 服务器server.xml的关键配置（一）</title><link>http://www.blogjava.net/DreamFight/articles/247850.html</link><dc:creator>DreamFight</dc:creator><author>DreamFight</author><pubDate>Tue, 23 Dec 2008 01:17:00 GMT</pubDate><guid>http://www.blogjava.net/DreamFight/articles/247850.html</guid><wfw:comment>http://www.blogjava.net/DreamFight/comments/247850.html</wfw:comment><comments>http://www.blogjava.net/DreamFight/articles/247850.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DreamFight/comments/commentRss/247850.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DreamFight/services/trackbacks/247850.html</trackback:ping><description><![CDATA[.下载<img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" zmxid="zoomXimageId22" /><a href="http://www.eu.apache.org/dist/jakarta/tomcat-5/" target="_blank">http://www.eu.apache.org/dist/jakarta/tomcat-5/</a> <br />
这里注意，在jakarta-tomcat-5.0.28.exe以前是有默认的admin模块，在jakarta-tomcat-5.5.9.exe则没有安装默认的admin模块，这时<img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" zmxid="zoomXimageId23" /><a href="http://127.0.0.1:8080/admin打开时则会出现" target="_blank">http://127.0.0.1:8080/admin打开时则会出现</a> <br />
Tomcat's administration web application is no longer installed by default. Download and install the "admin" package to use it. <br />
因此我们现在需要下载"admin"package 包<br />
把jakarta-tomcat-5.5.x.zip&nbsp;&nbsp; 与&nbsp;&nbsp;&nbsp; jakarta-tomcat-5.5.x-compat.zip&nbsp;&nbsp; 与&nbsp;&nbsp; jakarta-tomcat-5.5.x-admin.zip<br />
三个文件解压在同一个目录中<br />
(如果使用jdk1.4，才需要compat.zip用jdk1.5就可以免了这个。) <br />
<br />
<br />
<br />
<br />
2.修改jakarta-tomcat-5.5.x\conf\tomcat-users.xml.<br />
添加管理员账号lizongbo，密码为lizongbopass.<br />
新xml如下：<br />
&lt;?xml version='1.0' encoding='utf-8'?&gt;<br />
&lt;tomcat-users&gt;<br />
&nbsp;&nbsp; &lt;role rolename="tomcat"/&gt;<br />
&nbsp;&nbsp; &lt;role rolename="role1"/&gt;<br />
&nbsp;&nbsp; &lt;role rolename="manager"/&gt;<br />
&nbsp;&nbsp; &lt;role rolename="admin"/&gt;<br />
&nbsp;&nbsp; &lt;user username="tomcat" password="tomcat" roles="tomcat"/&gt;<br />
&nbsp;&nbsp; &lt;user username="role1" password="tomcat" roles="role1"/&gt;<br />
&nbsp;&nbsp; &lt;user username="both" password="tomcat" roles="tomcat,role1"/&gt;<br />
&nbsp;&nbsp; &lt;user username="lizongbo" password="lizongbopass" roles="admin,manager"/&gt;<br />
&lt;/tomcat-users&gt;<br />
<br />
<br />
有时在%CATALINA_HOME%\server\webapps\admin\WEB-INF\web.xml里面也要做些修改<br />
<br />
<br />
&lt;!-- Security is active on entire directory --&gt;<br />
&nbsp;&nbsp; &lt;security-constraint&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;display-name&gt;Tomcat Server Configuration Security Constraint&lt;/display-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;web-resource-collection&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;web-resource-name&gt;Protected Area&lt;/web-resource-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- Define the context-relative URL(s) to be protected --&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;*.jsp&lt;/url-pattern&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;*.do&lt;/url-pattern&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;*.html&lt;/url-pattern&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/web-resource-collection&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;auth-constraint&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- Anyone with one of the listed roles may access this area --&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;role-name&gt;admin&lt;/role-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/auth-constraint&gt;<br />
&nbsp;&nbsp; &lt;/security-constraint&gt;<br />
<br />
&nbsp;&nbsp; &lt;!-- Login configuration uses form-based authentication --&gt;<br />
&nbsp;&nbsp; &lt;login-config&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;auth-method&gt;FORM&lt;/auth-method&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;realm-name&gt;Tomcat Server Configuration Form-Based Authentication Area&lt;/realm-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;form-login-config&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;form-login-page&gt;/login.jsp&lt;/form-login-page&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;form-error-page&gt;/error.jsp&lt;/form-error-page&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/form-login-config&gt;<br />
&nbsp;&nbsp; &lt;/login-config&gt;<br />
<br />
&nbsp;&nbsp; &lt;!-- Security roles referenced by this web application --&gt;<br />
&nbsp;&nbsp; &lt;security-role&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The role that is required to log in to the Administration Application<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;role-name&gt;admin&lt;/role-name&gt;<br />
&nbsp;&nbsp; &lt;/security-role&gt;<br />
无论是 Authetication ( 身份验证 <img hspace="2" src="http://www.blogcn.com/images/wink.gif" vspace="2" border="0" twffan="done" zmxid="zoomXimageId24"  alt="" /> 还是 Authorization ( 权限管控 <img hspace="2" src="http://www.blogcn.com/images/wink.gif" vspace="2" border="0" twffan="done" zmxid="zoomXimageId25"  alt="" /> 都只有设置相关的 admin ROLE, 当你想要新增或修改相关的 AA, 就必须修改这一个文件, 来符合你的环境.<br />
3.修改jakarta-tomcat-5.5.x\conf\server.xml来解决编码问题。<br />
(给Connector 添加URIEncoding参数，参考<img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" zmxid="zoomXimageId26" /><a href="http://blog.csdn.net/darkxie/archive/2004/10/25/TOMCATAPP.aspx)" target="_blank">http://blog.csdn.net/darkxie/archive/2004/10/25/TOMCATAPP.aspx)</a> <br />
(可以设置成GB18030)<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;Connector port="8080"<br />
&nbsp;&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;&nbsp; enableLookups="false" redirectPort="8443" acceptCount="200"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GBK"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; compression="on" compressionMinSize="2048" <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; noCompressionUserAgents="gozilla, traviata" <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; compressableMimeType="text/html,text/xml"/&gt;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;Connector port="8009" <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; enableLookups="false" redirectPort="8443" protocol="AJP/1.3" URIEncoding="GBK"/&gt;<br />
<br />
<br />
4.启用支持gzip压缩.<br />
(<img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" zmxid="zoomXimageId27" /><a href="http://www.linuxaid.com.cn/forum/showdoc.jsp?l=1&amp;i=81169)" target="_blank">http://www.linuxaid.com.cn/forum/showdoc.jsp?l=1&amp;i=81169)</a> <br />
添加下列属性<br />
compression="on" <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; compressionMinSize="2048" <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; noCompressionUserAgents="gozilla, traviata" <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; compressableMimeType="text/html,text/xml"<br />
<br />
5.设置虚拟主机。<br />
在jakarta-tomcat-5.5.x\下建立文件夹vhost\www.mydomain.com。<br />
然后修改jakarta-tomcat-5.5.x\conf\server.xml<br />
<br />
&lt;Engine defaultHost="localhost" name="Catalina"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Host appBase="vhost/www.mydomain.com" name="<img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" zmxid="zoomXimageId28" /><a href='http://www.mydomain.com/">' target=_blank href_cetemp='http://www.mydomain.com/">'>http://www.mydomain.com/"&gt;</a> <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Host&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Host appBase="webapps" name="localhost"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Host&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Realm className="org.apache.catalina.realm.UserDatabaseRealm"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Engine&gt;<br />
<br />
6.添加数据库驱动,更新mail.jar和actiovation.jar<br />
复制mysql-connector-java-3.0.16-ga-bin.jar,pg74.215.jdbc3.jar到 jakarta-tomcat-5.5.x\common\lib\<br />
还有javamail 1.3.2的mail.jar，jaf-1_0_2的 activation.jar<br />
msSQl 2000 JDBC sp3，msbase.jar,msutil,jar,mssqlserver.jar<br />
<br />
<br />
7.配置SSL<br />
参考 <img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" zmxid="zoomXimageId29" /><a href="http://jakarta.apache.org/tomcat/tomcat-5.5-doc/ssl-howto.html" target="_blank">http://jakarta.apache.org/tomcat/tomcat-5.5-doc/ssl-howto.html</a> <br />
D:\j2sdk1.4.2_06\bin&gt;%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA<br />
输入keystore密码：&nbsp;&nbsp; lizongbossl<br />
您的名字与姓氏是什么？<br />
&nbsp;&nbsp; [tomcat5.5.x]：&nbsp;&nbsp; tomcat5.5.x<br />
您的组织单位名称是什么？<br />
&nbsp;&nbsp; [jakarta]：&nbsp;&nbsp; jakarta<br />
您的组织名称是什么？<br />
&nbsp;&nbsp; [apache]：&nbsp;&nbsp; apache<br />
您所在的城市或区域名称是什么？<br />
&nbsp;&nbsp; [hzcity]：&nbsp;&nbsp; hzcity<br />
您所在的州或省份名称是什么？<br />
&nbsp;&nbsp; [gdp]：&nbsp;&nbsp; gdp<br />
该单位的两字母国家代码是什么<br />
&nbsp;&nbsp; [CN]：&nbsp;&nbsp; CN<br />
CN=tomcat5.5.x, OU=jakarta, O=apache, L=hzcity, ST=gdp, C=CN 正确吗？<br />
&nbsp;&nbsp; [否]：&nbsp;&nbsp; y<br />
<br />
输入&lt;tomcat&gt;的主密码<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; （如果和 keystore 密码相同，按回车）：<br />
<br />
(必须密码一致，因此直接回车)<br />
然后再把userhome(例如：C:\Documents and Settings\lizongbo\)下的.keystore复制到<br />
tomcat的conf\目录下。<br />
(例如：D:\jakarta-tomcat-5.5.x\conf\.keystore <img hspace="2" src="http://www.blogcn.com/images/wink.gif" vspace="2" border="0" twffan="done" zmxid="zoomXimageId30"  alt="" /><br />
配置jakarta-tomcat-5.5.x\conf\server.xml<br />
加上<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;Connector port="8443" <br />
&nbsp;&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;&nbsp; enableLookups="false" disableUploadTimeout="true"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; acceptCount="100" scheme="https" secure="true"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; clientAuth="false" sslProtocol="TLS" <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; keystoreFile="conf/.keystore" <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; keystorePass="lizongbossl"&gt; &lt;!--与先前设置的密码一致--&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Connector&gt;<br />
8.禁止文件目录列表，<br />
修改jakarta-tomcat-5.5.x\conf\web.xml，把listing设置为false<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;default&lt;/servlet-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-class&gt;org.apache.catalina.servlets.DefaultServlet&lt;/servlet-class&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;init-param&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-name&gt;debug&lt;/param-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-value&gt;0&lt;/param-value&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/init-param&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;init-param&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-name&gt;listings&lt;/param-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-value&gt;true&lt;/param-value&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/init-param&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/servlet&gt;<br />
<br />
9.指定了自己的javaEncoding<br />
(参考 <img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" zmxid="zoomXimageId31" /><a href="http://gceclub.sun.com.cn/staticcontent/html/sunone/app7/app7-dg-webapp/ch6/ch6-4.html&nbsp;" target="_blank">http://gceclub.sun.com.cn/staticcontent/html/sunone/app7/app7-dg-webapp/ch6/ch6-4.html </a><img hspace="2" src="http://www.blogcn.com/images/wink.gif" vspace="2" border="0" twffan="done" zmxid="zoomXimageId32"  alt="" /><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;jsp&lt;/servlet-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-class&gt;org.apache.jasper.servlet.JspServlet&lt;/servlet-class&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;init-param&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-name&gt;fork&lt;/param-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-value&gt;false&lt;/param-value&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/init-param&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;init-param&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-name&gt;javaEncoding&lt;/param-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-value&gt;GB18030&lt;/param-value&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/init-param&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;init-param&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-name&gt;xpoweredBy&lt;/param-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-value&gt;true&lt;/param-value&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/init-param&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;load-on-startup&gt;3&lt;/load-on-startup&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/servlet&gt;<br />
10.添加rar,iso等的mime-type映射 <br />
避免在浏览器里直接打开。<br />
&lt;mime-mapping&gt;<br />
&lt;extension&gt;mht&lt;/extension&gt;<br />
&lt;mime-type&gt;text/x-mht&lt;/mime-type&gt;<br />
&lt;/mime-mapping&gt;<br />
&lt;mime-mapping&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;extension&gt;rar&lt;/extension&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mime-type&gt;application/octet-stream&lt;/mime-type&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/mime-mapping&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;mime-mapping&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;extension&gt;iso&lt;/extension&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mime-type&gt;application/octet-stream&lt;/mime-type&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/mime-mapping&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;mime-mapping&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;extension&gt;ape&lt;/extension&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mime-type&gt;application/octet-stream&lt;/mime-type&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/mime-mapping&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;mime-mapping&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;extension&gt;rmvb&lt;/extension&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mime-type&gt;application/octet-stream&lt;/mime-type&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/mime-mapping&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;mime-mapping&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;extension&gt;ico&lt;/extension&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mime-type&gt;image/x-icon&lt;/mime-type&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/mime-mapping&gt;<br />
10.1对html静态页面设置编码<br />
&lt;!--&nbsp;&nbsp; 修改下面两行以支持静态超文本的自动编码 <br />
&nbsp;&nbsp; --&gt; <br />
&lt;mime-mapping&gt;<br />
&nbsp;&nbsp; &lt;extension&gt;htm&lt;/extension&gt; <br />
&nbsp;&nbsp; &lt;mime-type&gt;text/html;charset=gb2312&lt;/mime-type&gt; <br />
&nbsp;&nbsp; &lt;/mime-mapping&gt;<br />
&lt;mime-mapping&gt;<br />
&nbsp;&nbsp; &lt;extension&gt;html&lt;/extension&gt; <br />
&nbsp;&nbsp; &lt;mime-type&gt;text/html;charset=gb2312&lt;/mime-type&gt; <br />
&nbsp;&nbsp; &lt;/mime-mapping&gt;<br />
&nbsp;&nbsp; &lt;/web-app&gt;<br />
<br />
11.添加welcome-file-list，并调整顺序。<br />
&lt;welcome-file-list&gt;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;welcome-file&gt;index.jsp&lt;/welcome-file&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;welcome-file&gt;index.html&lt;/welcome-file&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;welcome-file&gt;index.htm&lt;/welcome-file&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;welcome-file&gt;default.html&lt;/welcome-file&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;welcome-file&gt;default.htm&lt;/welcome-file&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;welcome-file&gt;default.jsp&lt;/welcome-file&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/welcome-file-list&gt;
 <img src ="http://www.blogjava.net/DreamFight/aggbug/247850.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DreamFight/" target="_blank">DreamFight</a> 2008-12-23 09:17 <a href="http://www.blogjava.net/DreamFight/articles/247850.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcate 中server.xml 目录讲解</title><link>http://www.blogjava.net/DreamFight/articles/247848.html</link><dc:creator>DreamFight</dc:creator><author>DreamFight</author><pubDate>Tue, 23 Dec 2008 00:46:00 GMT</pubDate><guid>http://www.blogjava.net/DreamFight/articles/247848.html</guid><wfw:comment>http://www.blogjava.net/DreamFight/comments/247848.html</wfw:comment><comments>http://www.blogjava.net/DreamFight/articles/247848.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DreamFight/comments/commentRss/247848.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DreamFight/services/trackbacks/247848.html</trackback:ping><description><![CDATA[Tomcat的配置<br />
Tomcat的配置可以通过两种方式来配置。<br />
1.通过/conf/server.xml来配置。<br />
2.通过可视化的界面来配置。<br />
<br />
下面来介绍server.xml的配置：<br />
按装完Tomcat后它的server.xml的配置内容是这样的：<br />
<br />
<br />
connectionTimeout="2000"<br />
它表式的是：一个客房端连接到服务器如果没有任何动作它如果超过这个时间那么它就视为无效。<br />
2000表式的是毫秒。<br />
<br />
maxThreads="150"<br />
它表示的是同一时间连接到服务器上的同一个页面时的最大连接数。，<br />
<br />
<br />
<img src ="http://www.blogjava.net/DreamFight/aggbug/247848.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DreamFight/" target="_blank">DreamFight</a> 2008-12-23 08:46 <a href="http://www.blogjava.net/DreamFight/articles/247848.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat虚拟目录设置</title><link>http://www.blogjava.net/DreamFight/articles/244729.html</link><dc:creator>DreamFight</dc:creator><author>DreamFight</author><pubDate>Sat, 06 Dec 2008 00:39:00 GMT</pubDate><guid>http://www.blogjava.net/DreamFight/articles/244729.html</guid><wfw:comment>http://www.blogjava.net/DreamFight/comments/244729.html</wfw:comment><comments>http://www.blogjava.net/DreamFight/articles/244729.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DreamFight/comments/commentRss/244729.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DreamFight/services/trackbacks/244729.html</trackback:ping><description><![CDATA[<div>tomcat 安装好之后，只需要把你的程序包放到$Tomcat_Home$/webapps下就可以直接使用了。这样会使webapps越来越大就需要设置虚拟目录：<br />
1.单个应用设置（为你的单个项目设置虚拟目录）：<br />
&nbsp;在&lt;Host&gt;和&lt;/host&gt;之间加上<br />
&nbsp;&lt;Context path="/site" docBase="d:\site" reloadable="true" debug="0"&gt;<br />
&nbsp;&lt;/Context&gt;<br />
&nbsp;参数:path 表示在浏览器中输入<a href="http://localhost:8080/site"><u><font color="#0000ff">http://localhost:8080/site</font></u></a><br />
&nbsp;docBase表示你的程序包的物理绝对路径，默认的绝对路径是$Tomcat_Home$/webapps<br />
&nbsp;这样设定了之后会在$tomcat_home$/conf/catalina/localhost目录下生成一个site.xml文件，此文件的内容就是刚才设置的内容。<br />
2.通过前面我们知道了在$tomcat_home$/conf/catalina/localhost目录下会生成相应的配置文件，因此我们可以直接在$tomcat_home$/conf/catalina/localhost目录下写配置文件文件名任意取，最好是跟你的web应用相同便于管理，如site.xml内容同上<br />
&lt;Context path="/site" docBase="d:\site" reloadable="true" debug="0"&gt;<br />
&nbsp;&lt;/Context&gt;<br />
3.更改整个根目录（为你的所有项目设置虚拟目录）：<br />
&nbsp; 在$tomcat_home$/conf/server.xml中找到&lt;Host name="localhost" debug="0" appBase="webapps" <br />
&nbsp; unpackWARs="true" autoDeploy="true"&gt;<br />
&nbsp;将appBase的设置成期望的路径（绝对路径）<br />
&nbsp;出现的问题：输入：<a href="http://localhost:8080/"><u><font color="#800080">http://localhost:8080/</font></u></a>没有出现默认的页面<br />
&nbsp;原因当然是更改了路径造成的。解决也很简单了，把文件拷过来，或者再把原来默认的设成虚拟路径。 </div>
<div>在调试过程中你也许会遇到这样的错误：</div>
<div>严重: Error starting static Resources<br />
java.lang.IllegalArgumentException: Document base E:\Tomcat 5.0\webapps\balancerd does not exist or is not a readable directory<br />
&nbsp;at org.apache.naming.resources.FileDirContext.setDocBase(FileDirContext.java:138)<br />
&nbsp;at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:3910)<br />
&nbsp;at org.apache.catalina.core.StandardContext.start(StandardContext.java:4138)<br />
&nbsp;at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:823)<br />
&nbsp;at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:807)<br />
&nbsp;at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:595)<br />
&nbsp;at org.apache.catalina.core.StandardHostDeployer.addChild(StandardHostDeployer.java:903)<br />
&nbsp;at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br />
&nbsp;at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)<br />
&nbsp;at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)<br />
&nbsp;at java.lang.reflect.Method.invoke(Method.java:597)<br />
&nbsp;at org.apache.commons.beanutils.MethodUtils.invokeMethod(MethodUtils.java:216)<br />
&nbsp;at org.apache.commons.digester.SetNextRule.end(SetNextRule.java:256)<br />
&nbsp;at org.apache.commons.digester.Rule.end(Rule.java:276)<br />
&nbsp;at org.apache.commons.digester.Digester.endElement(Digester.java:1058)<br />
&nbsp;at org.apache.catalina.util.CatalinaDigester.endElement(CatalinaDigester.java:76)<br />
&nbsp;at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)<br />
&nbsp;at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)<br />
&nbsp;at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)<br />
&nbsp;at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)<br />
&nbsp;at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)<br />
&nbsp;at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)<br />
&nbsp;at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)<br />
&nbsp;at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)<br />
&nbsp;at org.apache.commons.digester.Digester.parse(Digester.java:1567)<br />
&nbsp;at org.apache.catalina.core.StandardHostDeployer.install(StandardHostDeployer.java:488)<br />
&nbsp;at org.apache.catalina.core.StandardHost.install(StandardHost.java:863)<br />
&nbsp;at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:483)<br />
&nbsp;at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:427)<br />
&nbsp;at org.apache.catalina.startup.HostConfig.checkContextLastModified(HostConfig.java:800)<br />
&nbsp;at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1085)<br />
&nbsp;at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:327)<br />
&nbsp;at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)<br />
&nbsp;at org.apache.catalina.core.StandardHost.backgroundProcess(StandardHost.java:800)<br />
&nbsp;at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1619)<br />
&nbsp;at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1628)<br />
&nbsp;at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1608)<br />
&nbsp;at java.lang.Thread.run(Thread.java:619)</div>
<div>这是因为在你的$tomcat_home$\conf\Catalina\localhost下对balancerd 这个项目设置虚拟目录的.xml文件指定这个项目的路径不对所造成的把路径改对了该错误消失！</div>
 <img src ="http://www.blogjava.net/DreamFight/aggbug/244729.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DreamFight/" target="_blank">DreamFight</a> 2008-12-06 08:39 <a href="http://www.blogjava.net/DreamFight/articles/244729.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat的目录结构及其用途</title><link>http://www.blogjava.net/DreamFight/articles/244728.html</link><dc:creator>DreamFight</dc:creator><author>DreamFight</author><pubDate>Sat, 06 Dec 2008 00:38:00 GMT</pubDate><guid>http://www.blogjava.net/DreamFight/articles/244728.html</guid><wfw:comment>http://www.blogjava.net/DreamFight/comments/244728.html</wfw:comment><comments>http://www.blogjava.net/DreamFight/articles/244728.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DreamFight/comments/commentRss/244728.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DreamFight/services/trackbacks/244728.html</trackback:ping><description><![CDATA[<font size="2">
<p><font size="2">Tomcat的目录结构及其用途</font></p>
<div align="center">
<table style="border-right: medium none; border-top: medium none; border-left: medium none; width: 519px; border-bottom: medium none; border-collapse: collapse" cellspacing="0" cellpadding="0" width="612" border="1">
    <tbody>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid">
            <p style="text-align: center" align="center"><font size="2"><sup>目</sup><sup> </sup><sup>录</sup></font></p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; padding-top: 0cm; border-bottom: windowtext 1pt solid">
            <p style="text-align: center" align="center"><font size="2"><sup>用</sup><sup> </sup><sup>途</sup></font></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid">
            <p><sup><font size="2">/bin</font></sup></p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; padding-top: 0cm; border-bottom: windowtext 1pt solid">
            <p><font size="2"><sup>存放启动和关闭</sup><sup>Tomcat</sup><sup>的脚本文件</sup></font></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid">
            <p><sup><font size="2">/common/lib</font></sup></p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; padding-top: 0cm; border-bottom: windowtext 1pt solid">
            <p><font size="2"><sup>存放</sup><sup>Tomcat</sup><sup>服务器及所有</sup><sup>Web</sup><sup>应用程序都可以访问的</sup><sup>JAR</sup><sup>文件</sup></font></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid">
            <p><sup><font size="2">/conf</font></sup></p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; padding-top: 0cm; border-bottom: windowtext 1pt solid">
            <p><font size="2"><sup>存放</sup><sup>Tomcat</sup><sup>服务器的各种配置文件，其中包括</sup><sup>server.xml</sup><sup>（</sup><sup>Tomcat</sup><sup>的主要配置文件）、</sup><sup>tomcat-users.xml</sup><sup>和</sup><sup>web.xml</sup><sup>等配置文件</sup></font></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid">
            <p><sup><font size="2">/conf/catalina/localhost</font></sup></p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; padding-top: 0cm; border-bottom: windowtext 1pt solid">
            <p><font size="2"><sup>存放</sup><sup>Tomcat</sup><sup>服务器对每个项目的配置信息，如项目的虚拟目录，所有项目的目录等信息。</sup></font></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid">
            <p><sup><font size="2">work/Catalina/localhost</font></sup></p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; padding-top: 0cm; border-bottom: windowtext 1pt solid">
            <p><font size="2"><sup>存放</sup><sup>Tomcat</sup><sup>这些目录都是以前我们做的Web应用程序的上下文路径命名的，它里边包括了web应用程序生成的java代码，和class字节码,其中&#8220;_&#8221;目录对应的是ROOT目录。</sup></font></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid">
            <p><sup><font size="2">/logs</font></sup></p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; padding-top: 0cm; border-bottom: windowtext 1pt solid">
            <p><font size="2"><sup>存放</sup><sup>Tomcat</sup><sup>的日志文件</sup></font></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid">
            <p><sup><font size="2">/server/lib</font></sup></p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; padding-top: 0cm; border-bottom: windowtext 1pt solid">
            <p><font size="2"><sup>存放</sup><sup>Tomcat</sup><sup>服务器运行所需的各种</sup><sup>JAR</sup><sup>文件</sup></font></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid">
            <p><sup><font size="2">/server/webapps</font></sup></p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; padding-top: 0cm; border-bottom: windowtext 1pt solid">
            <p><font size="2"><sup>存放</sup><sup>Tomcat</sup><sup>的两个</sup><sup>Web</sup><sup>应用程序：</sup><sup>admin</sup><sup>应用程序和</sup><sup>manager</sup><sup>应用程序</sup></font></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid">
            <p><sup><font size="2">/shared/lib</font></sup></p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; padding-top: 0cm; border-bottom: windowtext 1pt solid">
            <p><font size="2"><sup>存放所有</sup><sup>Web</sup><sup>应用程序都可以访问的</sup><sup>JAR</sup><sup>文件(不能被tomcat访问)</sup></font></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid">
            <p><sup><font size="2">/temp</font></sup></p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; padding-top: 0cm; border-bottom: windowtext 1pt solid">
            <p><font size="2"><sup>存放</sup><sup>Tomcat</sup><sup>运行时产生的临时文件</sup></font></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid">
            <p><sup><font size="2">/webapps</font></sup></p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; padding-top: 0cm; border-bottom: windowtext 1pt solid">
            <p><font size="2"><sup>当发布</sup><sup>Web</sup><sup>应用程序时，通常把</sup><sup>Web</sup><sup>应用程序的目录及文件放到这个目录下</sup></font></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid">
            <p><sup><font size="2">/work</font></sup></p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; padding-top: 0cm; border-bottom: windowtext 1pt solid">
            <p><font size="2"><sup>Tomcat</sup><sup>将</sup><sup>JSP</sup><sup>生成的</sup><sup>Servlet</sup><sup>源文件和字节码文件放到这个目录下</sup></font></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid">
            <p><sup><font size="2"></font></sup>&nbsp;</p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; padding-top: 0cm; border-bottom: windowtext 1pt solid">
            <p><font size="2"><sup></sup></font>&nbsp;</p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid">
            <p><sup><font size="2"></font></sup>&nbsp;</p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; padding-top: 0cm; border-bottom: windowtext 1pt solid">
            <p><font size="2"><sup></sup></font>&nbsp;</p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid">
            <p><sup><font size="2"></font></sup>&nbsp;</p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; padding-top: 0cm; border-bottom: windowtext 1pt solid">
            <p><font size="2"><sup></sup></font>&nbsp;</p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid">
            <p><sup><font size="2"></font></sup>&nbsp;</p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; padding-top: 0cm; border-bottom: windowtext 1pt solid">
            <p><font size="2"><sup></sup></font>&nbsp;</p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 18px; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 31px">
            <p><sup><font size="2"></font></sup>&nbsp;</p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; padding-top: 0cm; border-bottom: windowtext 1pt solid">
            <p><font size="2"><sup></sup></font>&nbsp;</p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p><font size="2">从表5-1中可以看到，/common/lib目录、/server/lib和/shared/lib目录下都可以存放JAR文件，它们的区别在于：</font></p>
<p><font size="2">— 在/server/lib目录下的JAR文件只能被Tomcat服务器访问；</font></p>
<p><font size="2">— 在/shared/lib目录下的JAR文件可以被所有的Web应用程序访问，但不能被Tomcat服务器访问；</font></p>
<p><font size="2">— 在/common/lib目录下的JAR文件可以被Tomcat服务器和所有的Web应用程序访问。</font></p>
<p><font size="2">此外，对于后面将要介绍的Java Web应用程序，在它的WEB-INF目录下，也可以建立lib子目录，在lib子目录下可以存放各种JAR文件，这些JAR文件只能被当前Web应用程序所访问。</font></p>
</font>
<img src ="http://www.blogjava.net/DreamFight/aggbug/244728.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DreamFight/" target="_blank">DreamFight</a> 2008-12-06 08:38 <a href="http://www.blogjava.net/DreamFight/articles/244728.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat 错误调试技巧</title><link>http://www.blogjava.net/DreamFight/articles/244727.html</link><dc:creator>DreamFight</dc:creator><author>DreamFight</author><pubDate>Sat, 06 Dec 2008 00:32:00 GMT</pubDate><guid>http://www.blogjava.net/DreamFight/articles/244727.html</guid><wfw:comment>http://www.blogjava.net/DreamFight/comments/244727.html</wfw:comment><comments>http://www.blogjava.net/DreamFight/articles/244727.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DreamFight/comments/commentRss/244727.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DreamFight/services/trackbacks/244727.html</trackback:ping><description><![CDATA[<div><font size="2">常用的参数是start、run和stop，参数start表示在一个单独的窗口中启动Tomcat服务器，参数run表示在当前窗口中启动Tomcat服务器，参数stop表示关闭Tomcat服务器。我们执行startup.bat，实际上执行的就是&#8220;catalina.bat start&#8221;命令；执行shutdown.bat，实际上执行的是&#8220;catalina.bat stop&#8221;命令。&#8220;catalina.bat run&#8221;命令有时候是非常有用的，特别是当我们需要查看Tomcat的出错信息时。我们在开发JSP程序时，经常会碰到自己机器上的8080端口号被别的应用程序占用，或者在配置server.xml时出现错误，当通过startup.bat（相当于执行&#8220;catalina.bat start&#8221;）启动Tomcat服务器时，会导致启动失败，因为是在单独的窗口中启动Tomcat服务器，所以一旦启动失败，命令提示符窗口就自动关闭了，程序运行中输出的出错信息也随之消失，而且没有任何的日志信息，这就使得我们没有办法找出错误原因。当出现错误时，我们可以换成&#8220;catalina.bat run&#8221;命令再次启动，一旦启动失败，仅仅是Tomcat服务器异常终止，但是在当前的命令提示符窗口下仍然保留了启动时的出错信息，这样我们就可以查找启动失败的原因了。</font><a href="http://blog.csdn.net/swmem/archive/2008/12/05/3454629.aspx"></a></div>
 <img src ="http://www.blogjava.net/DreamFight/aggbug/244727.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DreamFight/" target="_blank">DreamFight</a> 2008-12-06 08:32 <a href="http://www.blogjava.net/DreamFight/articles/244727.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>