﻿<?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-java 学习-随笔分类-tomcat</title><link>http://www.blogjava.net/zxfahjz/category/10566.html</link><description>软件开发相关方面的学习</description><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 21:23:03 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 21:23:03 GMT</pubDate><ttl>60</ttl><item><title>Tomcat虚拟目录设置 </title><link>http://www.blogjava.net/zxfahjz/archive/2006/04/28/43876.html</link><dc:creator>zxf</dc:creator><author>zxf</author><pubDate>Fri, 28 Apr 2006 13:45:00 GMT</pubDate><guid>http://www.blogjava.net/zxfahjz/archive/2006/04/28/43876.html</guid><wfw:comment>http://www.blogjava.net/zxfahjz/comments/43876.html</wfw:comment><comments>http://www.blogjava.net/zxfahjz/archive/2006/04/28/43876.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zxfahjz/comments/commentRss/43876.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zxfahjz/services/trackbacks/43876.html</trackback:ping><description><![CDATA[tomcat 安装好之后，只需要把你的程序包放到$Tomcat_Home$/webapps下就可以直接使用了。这样会使webapps越来越大就需要设置虚拟目录：<br />1.单个应用设置：<br /> 在&lt;Host&gt;和&lt;/host&gt;之间加上<br /> &lt;Context path="/site" docBase="d:\site" reloadable="true" debug="0"&gt;<br /> &lt;/Context&gt;<br /> 参数:path 表示在浏览器中输入<a href="http://localhost:8080/site">http://localhost:8080/site</a><br />     docBase表示你的程序包的物理绝对路径，默认的绝对路径是$Tomcat_Home$/webapps<br /> 这样设定了之后会在$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 /> &lt;/Context&gt;<br />3.更改整个根目录：<br />  找到&lt;Host name="localhost" debug="0" appBase="webapps" <br />  unpackWARs="true" autoDeploy="true"&gt;<br /> 将appBase的设置成期望的路径（绝对路径）<br /> 出现的问题：输入：<a href="http://localhost:8080/">http://localhost:8080/</a>没有出现默认的页面<br /> 原因当然是更改了路径造成的。解决也很简单了，把文件拷过来，或者再把原来默认的设成虚拟路径。<img src ="http://www.blogjava.net/zxfahjz/aggbug/43876.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zxfahjz/" target="_blank">zxf</a> 2006-04-28 21:45 <a href="http://www.blogjava.net/zxfahjz/archive/2006/04/28/43876.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat全攻略</title><link>http://www.blogjava.net/zxfahjz/archive/2006/04/28/43719.html</link><dc:creator>zxf</dc:creator><author>zxf</author><pubDate>Fri, 28 Apr 2006 02:05:00 GMT</pubDate><guid>http://www.blogjava.net/zxfahjz/archive/2006/04/28/43719.html</guid><wfw:comment>http://www.blogjava.net/zxfahjz/comments/43719.html</wfw:comment><comments>http://www.blogjava.net/zxfahjz/archive/2006/04/28/43719.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zxfahjz/comments/commentRss/43719.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zxfahjz/services/trackbacks/43719.html</trackback:ping><description><![CDATA[
		<span class="atitle3">(一)：</span>安装及配置<br />安装--windows平台<br />从tomcat网站下载<a href="http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/v4.0.1/bin/jakarta-tomcat-4.0.1.exe" target="_blank">jakarta-tomcat-4.0.1.exe</a>，按照一般的windows程序安装步骤即可安装好tomcat,安装时它会自动寻找你的jdk和jre的位置。<br /><p><span class="atitle3">(二)：配置</span><br />运行tomcat需要设置JAVA_HOME变量</p><table cellspacing="0" cellpadding="5" width="100%" bgcolor="#cccccc" border="1"><tbody><tr><td><pre><code>JAVA_HOME=c:/jdk</code></pre></td></tr></tbody></table><p><span class="atitle3">(三)：运行</span><br />设置完毕后就可以运行tomcat服务器了，进入tomcat的bin目录，win98下用startup启动tomcat，linux下用startup.sh，相应的关闭tomcat的命令为shutdown和shutdown.sh。</p><p>启动后可以在浏览器中输入<a href="http://localhost:8080/">http://localhost:8080/</a>测试，由于tomcat本身具有web服务器的功能，因此我们不必安装apache，当然其也可以与apache集成到一起。<br /></p><p>（四）<a id="3" name="3"><span class="atitle2">：应用</span></a></p><p><span class="atitle3">(1):目录结构</span><br />tomcat的目录结构如下：</p><p></p><table cellspacing="0" cellpadding="5" width="100%" bgcolor="#cccccc" border="1"><tbody><tr><td>目录名</td><td>简介</td></tr><tr><td>bin</td><td>存放启动和关闭tomcat脚本</td></tr><tr><td>conf</td><td>包含不同的配置文件,server.xml(Tomcat的主要配置文件)和web.xml</td></tr><tr><td>work</td><td>存放jsp编译后产生的class文件</td></tr><tr><td>webapp</td><td>存放应用程序示例，以后你要部署的应用程序也要放到此目录</td></tr><tr><td>logs</td><td>存放日志文件</td></tr><tr><td>lib/japser/common</td><td>这三个目录主要存放tomcat所需的jar文件</td></tr></tbody></table><br /><span class="atitle3">(2)：server.xml配置简介</span><br />下面我们将讲述这个文件中的基本配置信息，更具体的配置信息见tomcat的文档
<p></p><table cellspacing="0" cellpadding="0" width="80%" bgcolor="#cccccc" border="1"><tbody><tr><td width="27%">元素名</td><td width="21%">属性</td><td width="52%">解释</td></tr><tr><td width="27%" rowspan="2">server</td><td width="21%">port</td><td width="52%">指定一个端口，这个端口负责监听关闭tomcat的请求</td></tr><tr><td width="21%">shutdown</td><td width="52%">指定向端口发送的命令字符串</td></tr><tr><td width="27%">service</td><td width="21%">name</td><td width="52%">指定service的名字</td></tr><tr><td width="27%" rowspan="7">Connector<br />(表示客户端和service之间的连接)</td><td width="21%">port</td><td width="52%">指定服务器端要创建的端口号，并在这个断口监听来自客户端的请求</td></tr><tr><td width="21%">minProcessors</td><td width="52%">服务器启动时创建的处理请求的线程数</td></tr><tr><td width="21%">maxProcessors</td><td width="52%">最大可以创建的处理请求的线程数</td></tr><tr><td width="21%">enableLookups</td><td width="52%">如果为true，则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名，若为false则不进行DNS查询，而是返回其ip地址</td></tr><tr><td width="21%">redirectPort</td><td width="52%">指定服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号</td></tr><tr><td width="21%">acceptCount</td><td width="52%">指定当所有可以使用的处理请求的线程数都被使用时，可以放到处理队列中的请求数，超过这个数的请求将不予处理</td></tr><tr><td width="21%">connectionTimeout</td><td width="52%">指定超时的时间数(以毫秒为单位)</td></tr><tr><td width="27%">Engine<br />(表示指定service中的请求处理机，接收和处理来自Connector的请求)</td><td width="21%">defaultHost</td><td width="52%">指定缺省的处理请求的主机名，它至少与其中的一个host元素的name属性值是一样的</td></tr><tr><td width="27%" rowspan="3">Context<br />(表示一个web应用程序，通常为WAR文件，关于WAR的具体信息见servlet规范)</td><td width="21%">docBase</td><td width="52%">应用程序的路径或者是WAR文件存放的路径</td></tr><tr><td width="21%">path</td><td width="52%">表示此web应用程序的url的前缀，这样请求的url为http://localhost:8080/path/****</td></tr><tr><td width="21%">reloadable</td><td width="52%">这个属性非常重要，如果为true，则tomcat会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes目录的变化，自动装载新的应用程序，我们可以在不重起tomcat的情况下改变应用程序</td></tr><tr><td width="27%" rowspan="3"><p>host<br />(表示一个虚拟主机)</p></td><td width="21%">name</td><td width="52%">指定主机名</td></tr><tr><td width="21%">appBase</td><td width="52%">应用程序基本目录，即存放应用程序的目录</td></tr><tr><td width="21%">unpackWARs</td><td width="52%">如果为true，则tomcat会自动将WAR文件解压，否则不解压，直接从WAR文件中运行应用程序</td></tr><tr><td rowspan="4"><p>Logger<br />(表示日志，调试和错误信息)</p></td><td width="21%">className</td><td width="52%">指定logger使用的类名，此类必须实现org.apache.catalina.Logger 接口</td></tr><tr><td width="21%">prefix</td><td width="52%">指定log文件的前缀</td></tr><tr><td width="21%">suffix</td><td width="52%">指定log文件的后缀</td></tr><tr><td width="21%">timestamp</td><td width="52%">如果为true，则log文件名中要加入时间，如下例:localhost_log.2001-10-04.txt</td></tr><tr><td width="27%"><p>Realm<br />(表示存放用户名，密码及role的数据库)</p></td><td width="21%">className</td><td width="52%">指定Realm使用的类名，此类必须实现org.apache.catalina.Realm接口</td></tr><tr><td rowspan="3"><p>Valve<br />(功能与Logger差不多，其prefix和suffix属性解释和Logger 中的一样)</p></td><td width="21%">className</td><td width="52%"><p>指定Valve使用的类名，如用org.apache.catalina.valves.AccessLogValve类可以记录应用程序的访问信息</p></td></tr><tr><td width="21%">directory</td><td width="52%">指定log文件存放的位置</td></tr><tr><td width="21%">pattern</td><td width="52%">有两个值，common方式记录远程主机名或ip地址，用户名，日期，第一行请求的字符串，HTTP响应代码，发送的字节数。combined方式比common方式记录的值更多</td></tr></tbody></table><p>注意：1：经过我测试，我设置Context 的path="",reloadable=true，然后放一个WAR文件到webapps目录，结果tomcat不能检测出此文件(重起tomcat可以)，而把此文件解压，则tomcat会自动检测出这个新的应用程序。如果不能自动检测WAR文件，我们可以利用下面管理中讲的方法来部署应用程序。</p><p>2：默认的server.xml中，Realm元素只设置了一个className属性，但此文件中也包含几个通过JDBC连接到数据库进行验证的示例(被注释掉了)，通过Realm元素我们可以实现容器安全管理(Container Managed Security)。</p><p>3：还有一些元素我们没有介绍，如Parameter，loader，你可以通过tomcat的文档获取这些元素的信息。</p><p><span class="atitle3">(3)：管理</span></p><p><b>1：配置</b><br />在进行具体的管理之前，我们先给tomcat添加一个用户，使这个用户有权限来进行管理。</p><p>打开conf目录下的tomcat-users.xml文件，在相应的位置添加下面一行：</p><p></p><table cellspacing="0" cellpadding="5" width="100%" bgcolor="#cccccc" border="1"><tbody><tr><td><pre><code>&lt;user name="zf" password="zf" roles="standard,manager"/&gt; 
</code></pre></td></tr></tbody></table><p>注意：这一行的最后部分一定是/&gt;,tomcat的文档掉了/符号，如果没有/符号的话，tomcat重起时将无法访问应用程序。通过logs/catalina.out文件你可以看到这个错误的详细信息。</p><p>然后重起tomcat，在浏览器中输入http://localhost:8080/manager/，会弹出对话框，输入上面的用户名和密码即可。</p><p><b>2：应用程序列表</b><br />在浏览器中输入http://localhost:8080/manager/list，浏览器将会显示如下的信息：</p><p></p><table cellspacing="0" cellpadding="5" width="100%" bgcolor="#cccccc" border="1"><tbody><tr><td><pre><code>OK - Listed applications for virtual host localhost
/ex:running:1
/examples:running:1
/webdav:running:0
/tomcat-docs:running:0
/manager:running:0
/:running:0</code></pre></td></tr></tbody></table><p>面的信息分别为应用程序的路径，当前状态(running 或者stopped)，与这个程序相连的session数。</p><p><b>3：重新装载应用程序</b><br />在浏览器中输入 http://localhost:8080/manager/reload?path=/examples，浏览器显示如下：</p><p></p><table cellspacing="0" cellpadding="5" width="100%" bgcolor="#cccccc" border="1"><tbody><tr><td><pre><code>OK - Reloaded application at context path /examples  
</code></pre></td></tr></tbody></table><p>表示example应用程序装载成功，如果我们将server.xml的Context元素的reloadable属性设为true(见上面表格)，则没必要利用这种方式重新装载应用程序，因为tomcat会自动装载。</p><p><b>4：显示session信息</b><br />在浏览器中输入http://localhost:8080/manager/sessions?path=/examples，浏览器显示如下：</p><p></p><table cellspacing="0" cellpadding="5" width="100%" bgcolor="#cccccc" border="1"><tbody><tr><td><pre><code>OK - Session information for application at context path /examples Default maximum session inactive interval 30 minutes  
</code></pre></td></tr></tbody></table><p><b>5：启动和关闭应用程序</b><br />在浏览器中输入http://localhost:8080/manager/start?path=/examples和http://localhost:8080/manager/stop?path=/examples分别启动和关闭examples应用程序。</p><p><b>6：部署及撤销部署</b><br />WAR有两种组织方式，一种是按一定的目录结构组织文件，一种是一个后缀为WAR的压缩包，因此它的部署方式也有两种：<br />(1)：在浏览器中输入：<code>http://localhost:8080/manager/install?path=/examples&amp;war=file:/c:\examples</code><br />就会将按目录结构组织的WAR部署</p><p>(2)：如果输入:<code>http://localhost:8080/manager/install?path=/examples&amp;war=jar:file:/c:\examples.war!/</code><br />就会将按压缩包组织的WAR部署，注意此url后半部分一定要有!/号。</p><p>部署后就可以用 http://localhost:8080/examples访问了。</p><p>在浏览器中输入：<code>http://localhost:8080/manager/remove?path=/examples</code><br />就会撤销刚才部署的应用程序。</p><p><span class="atitle3">(4)：与apache集成</span><br />虽然tomcat也可以作web服务器,但其处理静态html的速度比不上apache,且其作为web服务器的功能远不如apache,因此我们想把apache和tomcat集成起来。</p><p>我们以linux系统为例介绍.</p><p>从apache网站下载<a href="http://www.apache.org/dist/httpd/apache_1.3.22.tar.gz" target="_blank"><font color="#002c99">apache1.3.22源代码版本</font></a>，然后使用如下命令配置安装apache：</p><p></p><table cellspacing="0" cellpadding="5" width="100%" bgcolor="#cccccc" border="1"><tbody><tr><td><pre><code>mkdir /usr/local/apache
tar zxvf apache.1.32.tar.gz
cd apache.1.32
./configure --prefix=/usr/local/apache --enable-module=so 
make
make install
</code></pre></td></tr></tbody></table><p>注意configure命令指定目标安装目录，并且加入DSO(Dynamic Shared Object)支持，注意一定不要忘了这一个选项。</p><p>然后下载<a href="http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/v4.0.1/bin/linux/i386/webapp-module-1.0-tc40-linux-glibc2.2.tar.gz" target="_blank"><font color="#002c99">webapp模块</font></a>，将解压后mod_webapp.so文件放入apache的libexec目录，编辑apache的conf目录下的httpd.conf，在这个文件的最后加入下面三行：</p><p></p><table cellspacing="0" cellpadding="5" width="100%" bgcolor="#cccccc" border="1"><tbody><tr><td><pre><code>LoadModule webapp_module libexec/mod_webapp.so
WebAppConnection warpConnection warp localhost:8008
WebAppDeploy examples warpConnection /examples/ 
</code></pre></td></tr></tbody></table><p>第一行是加入webapp模块，如果编译apache时不增加DSO支持，则无法使用LoadModule指令，第二行指定tomcat与apache的连接，第三行指定部署那个应用，这两个指令使用格式如下：</p><p></p><table cellspacing="0" cellpadding="5" width="100%" bgcolor="#cccccc" border="1"><tbody><tr><td><pre><code>WebAppConnection [connection name] [provider] [host:port]
WebAppDeploy [application name] [connection name] [url path]  
</code></pre></td></tr></tbody></table><br />其中connection name指定连接名，provider只能是warp，port端口与你的tomcat的配置文件server.xml最后几行指定的要保持一致。文件如下：
<p></p><table cellspacing="0" cellpadding="5" width="100%" bgcolor="#cccccc" border="1"><tbody><tr><td><pre><code>&lt;Service name="Tomcat-Apache"&gt; 
&lt;Connector className="org.apache.catalina.connector.warp.WarpConnector"
port="8008" minProcessors="5" maxProcessors="75"
enableLookups="true"
acceptCount="10" debug="0"/&gt;
******
&lt;/Service&gt; 
</code></pre></td></tr></tbody></table><br />application name与你在tomcat中部署的应用名一致，url path指定访问这个应用的url。例如上面的例子可以通过http://localhost/examples/来访问tomcat中的examples应用。
<p><span class="atitle3">(5)：中文问题</span><br />一般jsp的乱码问题可以通过在jsp中加入&lt;%@ page contentType="text/html;charset=GB2312" %&gt;来解决，至于servlet的乱码在可以使用servlet2.3中提供的HttpServeletRequest.setCharacterEncoding函数。更详细的中文问题请见<a href="http://www-900.ibm.com/developerWorks/cn/java/jsp_dbcsz/index.shtml" target="_blank"><font color="#002c99">JSP/Servlet 中的汉字编码问题</font></a>。</p><p><a id="4" name="4"><span class="atitle2">四：综述</span></a><br />tomcat作为一个servlet(jsp也被编译为servlet执行)容器，其应用前景是非常好的，如果与<a href="http://www.jboss.org/" target="_blank"><font color="#002c99">jboss</font></a>结合起来，则可以实现sun的j2ee规范(用jboss作ejb服务器)。jboss的官方网站也提供集成了tomcat3.2*的jboss以供下载。另外一个开源的应用服务器(<a href="http://www.enhydra.org/" target="_blank"><font color="#002c99">enhydra</font></a>) 也是基于tomcat的，其提供了更友好的管理界面，部署应用程序也更简单，功能也更强大。</p><img src ="http://www.blogjava.net/zxfahjz/aggbug/43719.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zxfahjz/" target="_blank">zxf</a> 2006-04-28 10:05 <a href="http://www.blogjava.net/zxfahjz/archive/2006/04/28/43719.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>