﻿<?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/wanspring/category/15639.html</link><description>把春天的气息和光芒洒满大地，沐浴着身边的每一个人... ...</description><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 08:46:17 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 08:46:17 GMT</pubDate><ttl>60</ttl><item><title>应用服务器：Tomcat配置技巧Top10</title><link>http://www.blogjava.net/wanspring/articles/71734.html</link><dc:creator>春辉</dc:creator><author>春辉</author><pubDate>Mon, 25 Sep 2006 06:25:00 GMT</pubDate><guid>http://www.blogjava.net/wanspring/articles/71734.html</guid><wfw:comment>http://www.blogjava.net/wanspring/comments/71734.html</wfw:comment><comments>http://www.blogjava.net/wanspring/articles/71734.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wanspring/comments/commentRss/71734.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wanspring/services/trackbacks/71734.html</trackback:ping><description><![CDATA[
		<p>现在开发Java Web应用，建立和部署Web内容是一件很简单的工作。使用Jakarta Tomcat作为Servlet和JSP容器的人已经遍及全世界。Tomcat具有免费、跨平台等诸多特性，并且更新得很快，现在非常的流行。</p>
		<p>
				<font face="Times New Roman" size="3">你所需要做的就是：按照你的需求配置Tomcat，只要你正确配置，Tomcat一般都能适合你的要求。下面是一系列关于Tomcat的配置技巧，这些技巧源自于我的书：《Tomcat权威指南》，希望对你有所帮助。?? Jason Brittain </font>
		</p>
		<p>
				<font face="Times New Roman" size="3">1． 配置系统管理（Admin Web Application） <br />大多数商业化的J2EE服务器都提供一个功能强大的管理界面，且大都采用易于理解的Web应用界面。Tomcat按照自己的方式，同样提供一个成熟的管理工具，并且丝毫不逊于那些商业化的竞争对手。Tomcat的Admin Web Application最初在4.1版本时出现，当时的功能包括管理context、data source、user和group等。当然也可以管理像初始化参数，user、group、role的多种数据库管理等。在后续的版本中，这些功能将得到很大的扩展，但现有的功能已经非常实用了。 </font>
		</p>
		<p>
				<font face="Times New Roman" size="3">Admin Web Application被定义在自动部署文件：CATALINA_BASE/webapps/admin.xml 。 <br />（译者注：CATALINA_BASE即tomcat安装目录下的server目录） </font>
		</p>
		<p>
				<font face="Times New Roman" size="3">你必须编辑这个文件，以确定Context中的docBase参数是绝对路径。也就是说，CATALINA_BASE/webapps/admin.xml 的路径是绝对路径。作为另外一种选择，你也可以删除这个自动部署文件，而在server.xml文件中建立一个Admin Web Application的context，效果是一样的。你不能管理Admin Web Application这个应用，换而言之，除了删除CATALINA_BASE/webapps/admin.xml ，你可能什么都做不了。 </font>
		</p>
		<p>
				<font face="Times New Roman" size="3">如果你使用UserDatabaseRealm（默认），你将需要添加一个user以及一个role到CATALINA_BASE/conf/tomcat-users.xml 文件中。你编辑这个文件，添加一个名叫“admin”的role 到该文件中，如下： </font>
		</p>
		<p>
				<font face="Times New Roman" size="3">&lt; role name="admin"/ &gt;  </font>
		</p>
		<p>
				<font face="Times New Roman" size="3">你同样需要有一个用户，并且这个用户的角色是“admin”。象存在的用户那样，添加一个用户（改变密码使其更加安全）： </font>
		</p>
		<p>
				<font face="Times New Roman" size="3">&lt;user name="admin" password="deep_dark_secret" roles="admin"/ &gt;  </font>
		</p>
		<p>
				<font face="Times New Roman" size="3">当你完成这些步骤后，请重新启动Tomcat，访问http://localhost:8080/admin，你将看到一个登录界面。Admin Web Application采用基于容器管理的安全机制，并采用了Jakarta Struts框架。一旦你作为“admin”角色的用户登录管理界面，你将能够使用这个管理界面配置Tomcat。 </font>
		</p>
		<p>
				<font face="Times New Roman" size="3">2．配置应用管理（Manager Web Application） <br />Manager Web Application让你通过一个比Admin Web Application更为简单的用户界面，执行一些简单的Web应用任务。 </font>
		</p>
		<p>
				<font face="Times New Roman" size="3">Manager Web Application被被定义在一个自动部署文件中： </font>
		</p>
		<p>
				<font face="Times New Roman" size="3">CATALINA_BASE/webapps/manager.xml 。 </font>
		</p>
		<p>
				<font face="Times New Roman" size="3">你必须编辑这个文件，以确保context的docBase参数是绝对路径，也就是说CATALINA_HOME/server/webapps/manager的绝对路径。 <br />（译者注：CATALINA_HOME即tomcat安装目录） </font>
		</p>
		<p>
				<font face="Times New Roman" size="3">如果你使用的是UserDatabaseRealm，那么你需要添加一个角色和一个用户到CATALINA_BASE/conf/tomcat-users.xml文件中。接下来，编辑这个文件，添加一个名为“manager”的角色到该文件中： </font>
		</p>
		<p>
				<font face="Times New Roman" size="3">&lt; role name=”manager” &gt;</font>
		</p>
		<p>
				<font face="Times New Roman" size="3">你同样需要有一个角色为“manager”的用户。像已经存在的用户那样，添加一个新用户（改变密码使其更加安全）： </font>
		</p>
		<p>
				<font face="Times New Roman" size="3">&lt; user name="manager" password="deep_dark_secret" roles="manager"/ &gt;</font>
		</p>
		<p>
				<font face="Times New Roman" size="3">然后重新启动Tomcat，访问http://localhost/manager/list，将看到一个很朴素的文本型管理界面，或者访问<a href="http://localhost:port/manager/html/list">http://localhost:port/manager/html/list</a>，将看到一个HMTL的管理界面。不管是哪种方式都说明你的Manager Web Application现在已经启动了。 </font>
		</p>
		<p>
				<font face="Times New Roman" size="3">Manager application让你可以在没有系统管理特权的基础上，安装新的Web应用，以用于测试。如果我们有一个新的web应用位于/home/user/hello下在，并且想把它安装到 /hello下，为了测试这个应用，我们可以这么做，在第一个文件框中输入“/hello”（作为访问时的path），在第二个文本框中输入“file:/home/user/hello”（作为Config URL）。 </font>
		</p>
		<p>
				<font face="Times New Roman" size="3">Manager application还允许你停止、重新启动、移除以及重新部署一个web应用。停止一个应用使其无法被访问，当有用户尝试访问这个被停止的应用时，将看到一个503的错误??“503 - This application is not currently available”。 </font>
		</p>
		<p>
				<font face="Times New Roman" size="3">移除一个web应用，只是指从Tomcat的运行拷贝中删除了该应用，如果你重新启动Tomcat，被删除的应用将再次出现（也就是说，移除并不是指从硬盘上删除）。 </font>
		</p>
		<p>
				<font face="Times New Roman" size="3">3．部署一个web应用 <br />有两个办法可以在系统中部署web服务。 <br />1 &amp;gt  拷贝你的WAR文件或者你的web应用文件夹（包括该web的所有内容）到$CATALINA_BASE/webapps目录下。 <br />2 &amp;gt  为你的web服务建立一个只包括context内容的XML片断文件，并把该文件放到$CATALINA_BASE/webapps目录下。这个web应用本身可以存储在硬盘上的任何地方。 </font>
		</p>
		<p>
				<font face="Times New Roman" size="3">如果你有一个WAR文件，你若想部署它，则只需要把该文件简单的拷贝到CATALINA_BASE/webapps目录下即可，文件必须以“.war”作为扩展名。一旦Tomcat监听到这个文件，它将（缺省的）解开该文件包作为一个子目录，并以WAR文件的文件名作为子目录的名字。接下来，Tomcat将在内存中建立一个context，就好象你在server.xml文件里建立一样。当然，其他必需的内容，将从server.xml中的DefaultContext获得。 </font>
		</p>
		<p>
				<font face="Times New Roman" size="3">部署web应用的另一种方式是写一个Context XML片断文件，然后把该文件拷贝到CATALINA_BASE/webapps目录下。一个Context片断并非一个完整的XML文件，而只是一个context元素，以及对该应用的相应描述。这种片断文件就像是从server.xml中切取出来的context元素一样，所以这种片断被命名为“context片断”。 </font>
		</p>
		<p>
				<font face="Times New Roman" size="3">举个例子，如果我们想部署一个名叫MyWebApp.war的应用，该应用使用realm作为访问控制方式，我们可以使用下面这个片断： </font>
		</p>
		<p>
				<font face="Times New Roman" size="3">&lt; !-- <br />Context fragment for deploying MyWebApp.war <br />-- &gt;<br />&lt; Context path="/demo" docBase="webapps/MyWebApp.war" <br />debug="0" privileged="true" &gt;  <br />&lt; Realm className="org.apache.catalina.realm.UserDatabaseRealm" <br />resourceName="UserDatabase"/ &gt;<br />&lt; /Context &gt;</font>
		</p>
		<p>
				<font face="Times New Roman" size="3">把该片断命名为“MyWebApp.xml”，然后拷贝到CATALINA_BASE/webapps目录下。 </font>
		</p>
		<p>
				<font face="Times New Roman" size="3">这种context片断提供了一种便利的方法来部署web应用，你不需要编辑server.xml，除非你想改变缺省的部署特性，安装一个新的web应用时不需要重启动Tomcat。 </font>
		</p>
		<font face="Times New Roman" size="3">
				<p>
						<br />4．配置虚拟主机（Virtual Hosts） <br />关于server.xml中“Host”这个元素，只有在你设置虚拟主机的才需要修改。虚拟主机是一种在一个web服务器上服务多个域名的机制，对每个域名而言，都好象独享了整个主机。实际上，大多数的小型商务网站都是采用虚拟主机实现的，这主要是因为虚拟主机能直接连接到Internet并提供相应的带宽，以保障合理的访问响应速度，另外虚拟主机还能提供一个稳定的固定IP。 </p>
				<p>基于名字的虚拟主机可以被建立在任何web服务器上，建立的方法就是通过在域名服务器（DNS）上建立IP地址的别名，并且告诉web服务器把去往不同域名的请求分发到相应的网页目录。因为这篇文章主要是讲Tomcat，我们不准备介绍在各种操作系统上设置DNS的方法，如果你在这方面需要帮助，请参考《DNS and Bind》一书，作者是Paul Albitz and Cricket Liu (O'Reilly)。为了示范方便，我将使用一个静态的主机文件，因为这是测试别名最简单的方法。 <br />在Tomcat中使用虚拟主机，你需要设置DNS或主机数据。为了测试，为本地IP设置一个IP别名就足够了，接下来，你需要在server.xml中添加几行内容，如下： </p>
				<p>&lt; Server port="8005" shutdown="SHUTDOWN" debug="0" &gt;<br />&lt; Service name="Tomcat-Standalone" &gt;<br />&lt; Connector className="org.apache.coyote.tomcat4.CoyoteConnector" <br />port="8080" minProcessors="5" maxProcessors="75" <br />enableLookups="true" redirectPort="8443"/ &gt;<br />&lt; Connector className="org.apache.coyote.tomcat4.CoyoteConnector" <br />port="8443" minProcessors="5" maxProcessors="75" <br />acceptCount="10" debug="0" scheme="https" secure="true"/ &gt;<br />&lt; Factory className="org.apache.coyote.tomcat4.CoyoteServerSocketFactory" <br />clientAuth="false" protocol="TLS" / &gt;<br />&lt; /Connector &gt;<br /><br />&lt; Engine name="Standalone" defaultHost="localhost" debug="0" &gt;<br />&lt; !-- This Host is the default Host -- &gt;<br />&lt; Host name="localhost" debug="0" appBase="webapps" <br />unpackWARs="true" autoDeploy="true" &gt;<br />&lt; Context path="" docBase="ROOT" debug="0"/ &gt;<br />&lt; Context path="/orders" docBase="/home/ian/orders" debug="0" <br />reloadable="true" crossContext="true" &gt;<br />&lt; /Context  &gt;  <br />&lt;  /Host  &gt;</p>
				<p>&lt;  !-- This Host is the first "Virtual Host": http://www.example.com/ -- &gt;<br />&lt;  Host name="www.example.com" appBase="/home/example/webapp" &gt;<br />&lt;  Context path="" docBase="."/ &gt;<br />&lt;  /Host &gt;</p>
				<p>&lt;  /Engine &gt;<br />&lt;  /Service &gt;<br />&lt;  /Server &gt;</p>
				<p>Tomcat的server.xml文件，在初始状态下，只包括一个虚拟主机，但是它容易被扩充到支持多个虚拟主机。在前面的例子中展示的是一个简单的server.xml版本，其中粗体部分就是用于添加一个虚拟主机。每一个Host元素必须包括一个或多个context元素，所包含的context元素中必须有一个是默认的context，这个默认的context的显示路径应该为空（例如，path=””）。 </p>
				<p>5．配置基础验证（Basic Authentication） <br />容器管理验证方法控制着当用户访问受保护的web应用资源时，如何进行用户的身份鉴别。当一个web应用使用了Basic Authentication（BASIC参数在web.xml文件中auto-method元素中设置），而有用户访问受保护的web应用时，Tomcat将通过HTTP Basic Authentication方式，弹出一个对话框，要求用户输入用户名和密码。在这种验证方法中，所有密码将被以64位的编码方式在网络上传输。 </p>
				<p>注意：使用Basic Authentication通过被认为是不安全的，因为它没有强健的加密方法，除非在客户端和服务器端都使用HTTPS或者其他密码加密码方式（比如，在一个虚拟私人网络中）。若没有额外的加密方法，网络管理员将能够截获（或滥用）用户的密码。但是，如果你是刚开始使用Tomcat，或者你想在你的web应用中测试一下基于容器的安全管理，Basic Authentication还是非常易于设置和使用的。只需要添加&lt;security-constraint &gt; 和&lt;login-config &gt;两个元素到你的web应用的web.xml文件中，并且在CATALINA_BASE/conf/tomcat-users.xml 文件中添加适当的&lt; role &gt; 和&lt; user &gt; 即可，然后重新启动Tomcat。 </p>
				<p>下面例子中的web.xml摘自一个俱乐部会员网站系统，该系统中只有member目录被保护起来，并使用Basic Authentication进行身份验证。请注意，这种方式将有效的代替Apache web服务器中的.htaccess文件。 </p>
				<p>&lt; !-- <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 />-- &gt;<br />&lt;  security-constraint &gt;  <br />&lt;  web-resource-collection &gt;<br />&lt; web-resource-name &gt;<br />Entire Application <br />&lt;  /web-resource-name &gt;<br />&lt;  url-pattern &amp;gt /members/*&amp;lt /url-pattern &gt;<br />&lt; /web-resource-collection &gt;<br />&lt; auth-constraint &gt;<br />&lt;  role-name &amp;gt member&amp;lt /role-name &gt;<br />&lt;  /auth-constraint &gt;<br />&lt;  /security-constraint &gt;<br />&lt;  !-- Define the Login Configuration for this Application -- &gt;<br />&lt;  login-config &gt;<br />&lt;  auth-method &amp;gt BASIC&amp;lt /auth-method &gt;<br />&lt;  realm-name &gt; My Club Members-only Area &lt;/realm-name &gt;<br />&lt;  /login-config &gt;</p>
				<p>6．配置单点登录（Single Sign-On） <br />一旦你设置了realm和验证的方法，你就需要进行实际的用户登录处理。一般说来，对用户而言登录系统是一件很麻烦的事情，你必须尽量减少用户登录验证的次数。作为缺省的情况，当用户第一次请求受保护的资源时，每一个web应用都会要求用户登录。如果你运行了多个web应用，并且每个应用都需要进行单独的用户验证，那这看起来就有点像你在与你的用户搏斗。用户们不知道怎样才能把多个分离的应用整合成一个单独的系统，所有他们也就不知道他们需要访问多少个不同的应用，只是很迷惑，为什么总要不停的登录。 </p>
				<p>Tomcat 4的“single sign-on”特性允许用户在访问同一虚拟主机下所有web应用时，只需登录一次。为了使用这个功能，你只需要在Host上添加一个SingleSignOn Valve元素即可，如下所示： </p>
				<p>&lt; Valve className="org.apache.catalina.authenticator.SingleSignOn" <br />debug="0"/ &gt;</p>
				<p>在Tomcat初始安装后，server.xml的注释里面包括SingleSignOn Valve配置的例子，你只需要去掉注释，即可使用。那么，任何用户只要登录过一个应用，则对于同一虚拟主机下的所有应用同样有效。 </p>
				<p>使用single sign-on valve有一些重要的限制： <br />1 &gt;  value必须被配置和嵌套在相同的Host元素里，并且所有需要进行单点验证的web应用（必须通过context元素定义）都位于该Host下。 <br />2 &gt;  包括共享用户信息的realm必须被设置在同一级Host中或者嵌套之外。 <br />3 &gt;  不能被context中的realm覆盖。 <br />4 &gt;  使用单点登录的web应用最好使用一个Tomcat的内置的验证方式（被定义在web.xml中的&lt; auth-method &gt; 中），这比自定义的验证方式强，Tomcat内置的的验证方式包括basic、digest、form和client-cert。 <br />5 &gt;  如果你使用单点登录，还希望集成一个第三方的web应用到你的网站中来，并且这个新的web应用使用它自己的验证方式，而不使用容器管理安全，那你基本上就没招了。你的用户每次登录原来所有应用时需要登录一次，并且在请求新的第三方应用时还得再登录一次。当然，如果你拥有这个第三方web应用的源码，而你又是一个程序员，你可以修改它，但那恐怕也不容易做。 <br />6 &gt;  单点登录需要使用cookies。 </p>
				<p>7．配置用户定制目录（Customized User Directores） <br />一些站点允许个别用户在服务器上发布网页。例如，一所大学的学院可能想给每一位学生一个公共区域，或者是一个ISP希望给一些web空间给他的客户，但这又不是虚拟主机。在这种情况下，一个典型的方法就是在用户名前面加一个特殊字符（~），作为每位用户的网站，比如： </p>
				<p>http://www.cs.myuniversity.edu/~username <br />http://members.mybigisp.com/~username </p>
				<p>Tomcat提供两种方法在主机上映射这些个人网站，主要使用一对特殊的Listener元素。Listener的className属性应该是org.apache.catalina.startup.UserConfig，userClass属性应该是几个映射类之一。如果你的系统是Unix，它将有一个标准的/etc/passwd文件，该文件中的帐号能够被运行中的Tomcat很容易的读取，该文件指定了用户的主目录，使用PasswdUserDatabase 映射类。 </p>
				<p>&lt; Listener className="org.apache.catalina.startup.UserConfig" <br />directoryName="public_html" <br />userClass="org.apache.catalina.startup.PasswdUserDatabase"/ &gt;</p>
				<p>web文件需要放置在像/home/users/ian/public_html 或者 /users/jbrittain/public_html一样的目录下面。当然你也可以改变public_html 到其他任何子目录下。 </p>
				<p>实际上，这个用户目录根本不一定需要位于用户主目录下里面。如果你没有一个密码文件，但你又想把一个用户名映射到公共的像/home一样目录的子目录里面，则可以使用HomesUserDatabase类。 </p>
				<p>&lt; Listener className="org.apache.catalina.startup.UserConfig" <br />directoryName="public_html" homeBase="/home" <br />userClass="org.apache.catalina.startup.HomesUserDatabase"/ &gt;</p>
				<p>这样一来，web文件就可以位于像/home/ian/public_html 或者 /home/jasonb/public_html一样的目录下。这种形式对Windows而言更加有利，你可以使用一个像c:home这样的目录。 </p>
				<p>这些Listener元素，如果出现，则必须在Host元素里面，而不能在context元素里面，因为它们都用应用于Host本身。 </p>
				<p>
						<br />8．在Tomcat中使用CGI脚本 <br />Tomcat主要是作为Servlet/JSP容器，但它也有许多传统web服务器的性能。支持通用网关接口（Common Gateway Interface，即CGI）就是其中之一，CGI提供一组方法在响应浏览器请求时运行一些扩展程序。CGI之所以被称为通用，是因为它能在大多数程序或脚本中被调用，包括：Perl，Python，awk，Unix shell scripting等，甚至包括Java。当然，你大概不会把一个Java应用程序当作CGI来运行，毕竟这样太过原始。一般而言，开发Servlet总要比CGI具有更好的效率，因为当用户点击一个链接或一个按钮时，你不需要从操作系统层开始进行处理。 </p>
				<p>Tomcat包括一个可选的CGI Servlet，允许你运行遗留下来的CGI脚本。 </p>
				<p>为了使Tomcat能够运行CGI，你必须做如下几件事： <br />1. 把servlets-cgi.renametojar （在CATALINA_HOME/server/lib/目录下）改名为servlets-cgi.jar。处理CGI的servlet应该位于Tomcat的CLASSPATH下。 <br />2. 在Tomcat的CATALINA_BASE/conf/web.xml 文件中，把关于&lt; servlet-name &gt; CGI的那段的注释去掉（默认情况下，该段位于第241行）。 <br />3. 同样，在Tomcat的CATALINA_BASE/conf/web.xml文件中，把关于对CGI进行映射的那段的注释去掉（默认情况下，该段位于第299行）。注意，这段内容指定了HTML链接到CGI脚本的访问方式。 <br />4. 你可以把CGI脚本放置在WEB-INF/cgi 目录下（注意，WEB-INF是一个安全的地方，你可以把一些不想被用户看见或基于安全考虑不想暴露的文件放在此处），或者你也可以把CGI脚本放置在context下的其他目录下，并为CGI Servlet调整cgiPathPrefix初始化参数。这就指定的CGI Servlet的实际位置，且不能与上一步指定的URL重名。 <br />5. 重新启动Tomcat，你的CGI就可以运行了。 </p>
				<p>在Tomcat中，CGI程序缺省放置在WEB-INF/cgi目录下，正如前面所提示的那样，WEB-INF目录受保护的，通过客户端的浏览器无法窥探到其中内容，所以对于放置含有密码或其他敏感信息的CGI脚本而言，这是一个非常好的地方。为了兼容其他服务器，尽管你也可以把CGI脚本保存在传统的/cgi-bin目录，但要知道，在这些目录中的文件有可能被网上好奇的冲浪者看到。另外，在Unix中，请确定运行Tomcat的用户有执行CGI脚本的权限。 </p>
				<p>9．改变Tomcat中的JSP编译器（JSP Compiler） <br />在Tomcat 4.1（或更高版本，大概），JSP的编译由包含在Tomcat里面的Ant程序控制器直接执行。这听起来有一点点奇怪，但这正是Ant有意为之的一部分，有一个API文档指导开发者在没有启动一个新的JVM的情况下，使用Ant。这是使用Ant进行Java开发的一大优势。另外，这也意味着你现在能够在Ant中使用任何javac支持的编译方式，这里有一个关于Apache Ant使用手册的javac page列表。使用起来是容易的，因为你只需要在&lt; init-param &gt;元素中定义一个名字叫“compiler”，并且在value中有一个支持编译的编译器名字，示例如下： </p>
				<p>&lt; servlet &gt;<br />&lt;  servlet-name &gt; jsp &lt;/servlet-name &gt;<br /><br />&lt;  servlet-class &gt; org.apache.jasper.servlet.JspServlet  &lt;  /servlet-class &gt;<br /><br />&lt; init-param &gt;<br />&lt;  param-name &gt; logVerbosityLevel &lt; /param-name &gt;<br />&lt;  param-value &gt; WARNING &lt;/param-value &gt;<br />&lt;  /init-param &gt;<br />&lt; init-param &gt;<br />&lt; param-name &gt;compiler &lt;/param-name &gt;<br />&lt; param-value &gt; jikes &lt; /param-value &gt; <br />&lt;  /init-param &gt;<br />&lt;  load-on-startup &gt; 3 &lt;/load-on-startup &gt;<br />&lt;  /servlet &gt;</p>
				<p>当然，给出的编译器必须已经安装在你的系统中，并且CLASSPATH可能需要设置，那处决于你选择的是何种编译器。 </p>
				<p>10．限制特定主机访问（Restricting Access to Specific Hosts） <br />有时，你可能想限制对Tomcat web应用的访问，比如，你希望只有你指定的主机或IP地址可以访问你的应用。这样一来，就只有那些指定的的客户端可以访问服务的内容了。为了实现这种效果，Tomcat提供了两个参数供你配置：RemoteHostValve 和RemoteAddrValve。 </p>
				<p>通过配置这两个参数，可以让你过滤来自请求的主机或IP地址，并允许或拒绝哪些主机/IP。与之类似的，在Apache的httpd文件里有对每个目录的允许/拒绝指定。 <br />例如你可以把Admin Web application设置成只允许本地访问，设置如下： </p>
				<p>&lt; Context path="/path/to/secret_files" ... &gt;<br />&lt; Valve className="org.apache.catalina.valves.RemoteAddrValve" <br />allow="127.0.0.1" deny=""/ &gt;<br />&lt; /Context &gt;</p>
				<p>如果没有给出允许主机的指定，那么与拒绝主机匹配的主机就会被拒绝，除此之外的都是允许的。与之类似，如果没有给出拒绝主机的指定，那么与允许主机匹配的主机就会被允许，除此之外的都是拒绝的。</p>
		</font>
<img src ="http://www.blogjava.net/wanspring/aggbug/71734.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wanspring/" target="_blank">春辉</a> 2006-09-25 14:25 <a href="http://www.blogjava.net/wanspring/articles/71734.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何使用JK2连接器配置Tomcat 5.0.x和IIS 5.0协同工作</title><link>http://www.blogjava.net/wanspring/articles/71693.html</link><dc:creator>春辉</dc:creator><author>春辉</author><pubDate>Mon, 25 Sep 2006 03:30:00 GMT</pubDate><guid>http://www.blogjava.net/wanspring/articles/71693.html</guid><wfw:comment>http://www.blogjava.net/wanspring/comments/71693.html</wfw:comment><comments>http://www.blogjava.net/wanspring/articles/71693.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wanspring/comments/commentRss/71693.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wanspring/services/trackbacks/71693.html</trackback:ping><description><![CDATA[
		<h1>如何使用JK2连接器配置Tomcat 5.0.x和IIS 5.0协同工作 </h1>
		<p>2004.5 臧士睿 qq:10743383</p>
		<p>网络转载请保留作者声明，盈利性印刷刊物转载请联系 <a href="mailto:zself@vip.cc163.com">zself@vip.cc163.com</a></p>
		<p>本文中所有操作都已经在Window2000 Advance Server和Window2000 Professional下测试通过</p>
		<p>所有内容:<a href="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/NewIIS5%2BTomcatHowTo.rar" target="_blank">New IIS5.0+Tomcat5.0.x HowTo</a><br />专题讨论区：<a href="http://hh.cc163.com/form/cgi-bin/forums.cgi?forum=4" target="_blank">http://hh.cc163.com/form/cgi-bin/forums.cgi?forum=4</a><br />主页：<a href="http://hh.cc163.com/" target="_blank">http://hh.cc163.com/</a></p>
		<h2>
				<br />
		</h2>
		<h2>目录</h2>
		<ol>
				<li>
						<a href="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/NewIIS5+Tomcat5HowTo.htm#introduction">序</a>
				</li>
				<li>
						<a href="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/NewIIS5+Tomcat5HowTo.htm#summary">摘要</a>
				</li>
				<li>
						<a href="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/NewIIS5+Tomcat5HowTo.htm#prerequisites">准备工作</a>
				</li>
				<li>
						<a href="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/NewIIS5+Tomcat5HowTo.htm#download">下载</a>
						<ol type="i">
								<li>
										<a href="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/NewIIS5+Tomcat5HowTo.htm#dlJava">Java 2 SDK 1.4.2 (或更高版本)</a>
								</li>
								<li>
										<a href="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/NewIIS5+Tomcat5HowTo.htm#dlTomcat">Tomcat 5.0.24 (或更高版本)</a>
								</li>
								<li>
										<a href="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/NewIIS5+Tomcat5HowTo.htm#dlConnector">Tomcat Web Server 连接器</a>
								</li>
						</ol>
				</li>
				<li>
						<a href="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/NewIIS5+Tomcat5HowTo.htm#installation">安装</a>
						<ol type="i">
								<li>
										<a href="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/NewIIS5+Tomcat5HowTo.htm#inJava">Java 2 SDK</a>
								</li>
								<li>
										<a href="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/NewIIS5+Tomcat5HowTo.htm#inTomcat">Tomcat 5</a>
								</li>
								<li>
										<a href="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/NewIIS5+Tomcat5HowTo.htm#inConnector">Tomcat JK2 IIS 连接器</a>
								</li>
						</ol>
				</li>
				<li>
						<a href="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/NewIIS5+Tomcat5HowTo.htm#configuration">设置</a>
						<ol type="i">
								<li>
										<a href="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/NewIIS5+Tomcat5HowTo.htm#conTomcat">Tomcat</a>
								</li>
								<li>
										<a href="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/NewIIS5+Tomcat5HowTo.htm#conConnector">Tomcat IIS 连接器</a>
								</li>
								<li>
										<a href="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/NewIIS5+Tomcat5HowTo.htm#conWindows">Windows</a>
								</li>
								<li>
										<a href="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/NewIIS5+Tomcat5HowTo.htm#conIIS">IIS</a>
										<ol type="a">
												<li>
														<a href="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/NewIIS5+Tomcat5HowTo.htm#conIIS2">设置ISAPI筛选器</a>
												</li>
												<li>
														<a href="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/NewIIS5+Tomcat5HowTo.htm#conIIS3">创建ISAPI筛选器使用的虚拟目录</a>
												</li>
												<li>
														<a href="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/NewIIS5+Tomcat5HowTo.htm#conIIS5">重新启动IIS服务</a>
												</li>
										</ol>
								</li>
						</ol>
				</li>
				<li>
						<a href="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/NewIIS5+Tomcat5HowTo.htm#testing">测试</a>
						<ol type="i">
								<li>
										<a href="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/NewIIS5+Tomcat5HowTo.htm#tstTomcat">Tomcat</a>
								</li>
								<li>
										<a href="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/NewIIS5+Tomcat5HowTo.htm#tstIIS">IIS</a>
								</li>
						</ol>
				</li>
				<li>
						<a href="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/NewIIS5+Tomcat5HowTo.htm#credits">参考文献</a>
				</li>
		</ol>
		<h2> </h2>
		<h2>
				<br />
				<a name="introduction">
				</a>序</h2>
		<p>最近遇到一个项目，无法避免的需要将IIS和Tomcat协调起来协同工作，同时解析asp和jsp两种脚本语言。<br />查看Tomcat官方HowTo，几经操作并未成功。查看网上讨论，发现中文资料介绍的都是tomcat4.x版本的配置方法，老旧已经不适用。后来对照多篇英文资料，学习、操作之后获得成功。<br /><br />鉴于讨论此问题的中文资料之匮乏，遂决定将我的配置过程整理，但愿对同好者有所帮助。<br /><br />此文章论述内容、书写格式仿照了<a href="http://virtualict.net/support/kb/iis6-Tomcat5-JK2.html" target="_blank">http://virtualict.net/support/kb/iis6-Tomcat5-JK2.html</a>，并引用了其中部分文字。<br /><br />在我配置、翻阅资料的过程当中，感觉到了IIS、Apache Tomcat、JK2等官方文档对此问题论述的不详尽，甚至有时候感觉到了被误导，以至增加了解决问题的难度，期待与大家讨论。</p>
		<p>本人的配置环境<br />Window2000 Professional+sp4 <br />(Window2000 Advance Server+sp4)<br />IIS 5.0<br />j2sdk1.4.2_04<br />jakarta-tomcat-5.0.24<br />jakarta-tomcat-connectors-jk2.0.4</p>
		<p>配置过程中涉及的路径如果没有特殊说明，则都不是系统要求，大家可以修改以适应自己机器的环境。</p>
		<p>这里是另一个自动安装程序，使用方法本文不做讨论<br /><a href="http://www.shiftomat.com/opensource/" target="_blank">Isapi redirector jk2.02 Installer - Integrating Tomcat with IIS</a></p>
		<h2>
				<a name="summary">
				</a>摘要</h2>
		<p>这是一篇讲述如何安装、配置Tomcat 5 Java Servlet &amp; JSP服务到微软IIS 5.0服务器的文章，这篇文章是本人自己配置过程和经验的总结，并推荐了一些给过本人极大帮助的文档。<br />掌握方法的朋友只需要15分钟就能完成整个配置过程。</p>
		<h2>
				<a name="prerequisites">
				</a>准备工作</h2>
		<p>
				<img height="90" src="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/images/3.gif" width="638" />
		</p>
		<p>Microsoft Windows 2000 professional, IIS5 已经安装并工作正常</p>
		<p>需要下载的软件:</p>
		<ul>
				<li>Java 2 Standard Edition Software Development Kit 1.4.2.04 (或更高版本) 
</li>
				<li>Jakarta Tomcat 5.0 (或更高版本) 
</li>
				<li>jakarta Tomcat Connectors-JK2.0.4(或更高版本) </li>
		</ul>
		<p>
				<a name="download">
				</a>下载</p>
		<p>由于版本更新的问题，这里没有给出软件的准确下载地址，但根据下面的链接用户可以很容易找到所需软件的确切地址。</p>
		<h3>
				<a name="dlJava">
				</a>Java 2 SDK 1.4.2 (或更高版本)</h3>
		<p>来自 <a href="http://java.sun.com/downloads/" target="external">java.sun.com/downloads/ </a>选择 the J2SE 1.4.2 (或更高版本) All platforms</p>
		<blockquote>
				<p>
						<a href="http://java.sun.com/downloads/" target="external">
						</a>
						<img height="194" src="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/images/39.gif" width="381" />
				</p>
		</blockquote>
		<p> </p>
		<blockquote>
				<p>
						<img height="123" src="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/images/40.gif" width="380" />
				</p>
		</blockquote>
		<p>然后按照提示进入文件列表页面，下载文件</p>
		<blockquote>
				<p>
						<img height="160" src="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/images/41.gif" width="564" />
				</p>
		</blockquote>
		<hr />
		<h3>
				<a name="dlTomcat">
				</a>Tomcat 5.0.24 (或更高版本)</h3>
		<p>来自<a href="http://jakarta.apache.org/site/binindex.cgi" target="external">Apache Jakarta</a>的for Win的编译版本。Tomcat 5.x 应该在页面的底部。写此文章的时候Tomcat已经发布了5.0.25版，不过配置过程是一样的。</p>
		<blockquote>
				<p>
						<img height="220" src="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/images/42.gif" width="345" />
				</p>
		</blockquote>
		<p>选择 5.0.24<b> 可执行文件</b> (或更高版本) </p>
		<hr />
		<h3>
				<a name="dlConnector">
				</a>Tomcat Web Server 连接器</h3>
		<p>同样在<a href="http://jakarta.apache.org/site/binindex.cgi" target="external">Apache Jakarta</a>下载页面。Tomcat Web Server 连接器就在Tomcat 5.0.24链接的下面</p>
		<blockquote>
				<p>
						<img height="154" src="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/images/43.gif" width="352" />
				</p>
		</blockquote>
		<p>选择 JK2 编译版本</p>
		<blockquote>
				<p>
						<img height="232" src="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/images/44.gif" width="472" />
				</p>
		</blockquote>
		<p>选择 win32, 然后选择下载<a href="http://www.flirble.org/apache/dist/jakarta/tomcat-connectors/jk2/binaries/win32/jakarta-tomcat-connectors-jk2.0.2-win32-IIS.zip" target="external">jakarta-tomcat-connectors-jk2.0.4-win32-IIS.zip</a></p>
		<blockquote>
				<p>
						<img height="315" src="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/images/45.gif" width="775" />
				</p>
		</blockquote>
		<p>
				<strong>注意</strong> 这个目录列表显示的文件名称被截断，所以你需要观察浏览器状态栏中的提示，确认你准备下载的文件应该是以"...iis.zip"为结尾的</p>
		<hr />
		<h2>
				<a name="installation">
				</a>安装</h2>
		<p>建议大家把下载的文件放在同一个文件夹里。</p>
		<blockquote>
				<p>
						<img height="99" src="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/images/5.gif" width="459" />
				</p>
		</blockquote>
		<h3>
				<a name="inJava">
				</a>Java 2 SDK</h3>
		<p>运行<strong>j2sdk-1_4_2_04-windows-i586-p.exe</strong> 按照提示安装</p>
		<blockquote>
				<p>
						<img height="379" src="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/images/4.gif" width="506" />
				</p>
		</blockquote>
		<p>可以更改安装路径到你习惯的地方</p>
		<blockquote> </blockquote>
		<hr />
		<h3>
				<a name="inTomcat">
				</a>Tomcat 5</h3>
		<p>运行<b>jakarta-tomcat-5.0.24.exe</b> 按照提示安装.</p>
		<blockquote>
				<p>
						<img height="386" src="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/images/6.gif" width="502" />
				</p>
		</blockquote>
		<p>如果要改变安装路径，可以在这个步骤操作。</p>
		<blockquote>
				<p>
						<img height="386" src="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/images/7.gif" width="502" />
				</p>
		</blockquote>
		<p>可以更改至其它路径，如 C:\Tomcat 5.0</p>
		<blockquote>
				<p>
						<img height="80" src="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/images/8.gif" width="465" />
				</p>
		</blockquote>
		<p>设定密码，妥善保管密码，不推荐空密码。</p>
		<blockquote>
				<p>
						<img height="387" src="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/images/9.gif" width="504" />
				</p>
		</blockquote>
		<p>这个步骤是选择本地机器的jdk路径，一般情况下，安装文件会自动搜索并显示，如果没有正确显示，也可以手动更改。</p>
		<blockquote>
				<p>
						<img height="385" src="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/images/10.gif" width="504" />
				</p>
		</blockquote>
		<p>成功安装后，程序会提示启动tomcat并查看readme文档<b>。</b></p>
		<p>
				<b>
						<a name="conWMA">
						</a>注意:</b> 启动Tomcat之前要确定系统没有其它服务已经占用8080端口(Tomcat默认端口)和8009端口( Tomcat's AJP13 连接器端口) </p>
		<p>Tomcat正常启动后会在系统栏加载图标</p>
		<blockquote>
				<p>
						<img height="53" src="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/images/38.gif" width="39" />
				</p>
		</blockquote>
		<p>在图标上右键鼠标可以看到一些设置项目</p>
		<blockquote>
				<p>
						<img height="100" src="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/images/1.gif" width="115" />
				</p>
				<p>点击Configure...看到如下显示，选择<b></b>Startup type为automatic自动启动。</p>
		</blockquote>
		<blockquote>
				<p>
						<img height="390" src="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/images/2.gif" width="414" />
				</p>
		</blockquote>
		<hr />
		<h3>
				<a name="inConnector">
				</a>Tomcat JK2 IIS 连接器</h3>
		<p>解压缩<b>jakarta-tomcat-connectors-jk2.0.4-win32-IIS.zip</b>得到如下文件夹</p>
		<blockquote>
				<p>
						<img height="93" src="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/images/14.gif" width="563" />
				</p>
		</blockquote>
		<p>进入<strong>\bin\</strong>后可见</p>
		<blockquote>
				<p>
						<img height="106" src="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/images/15.gif" width="576" />
				</p>
		</blockquote>
		<p>剪切/复制<b>isapi_redirector2.dll</b> 文件到Tomcat's <b>bin\</b>目录中</p>
		<blockquote>
				<p>
						<img height="191" src="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/images/17.gif" width="425" />
				</p>
		</blockquote>
		<p>新建目录<b>win32\i386\</b> 并粘贴<b>isapi_redirector2.dll</b>。</p>
		<blockquote>
				<p>
						<img height="150" src="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/images/18.gif" width="327" />
				</p>
		</blockquote>
		<p>记住这个路径，稍后配置IIS的时候还会用到。这个路径不是系统要求的，可改变！</p>
		<p>现在可以删除<b>jakarta-tomcat-connectors-jk2.0.4-win32-IIS</b>目录，这里面的文件已经没用了。实际上在<b>jakarta-tomcat-connectors-jk2.0.4-win32-IIS.zip</b>中我们只用到了<b>isapi_redirector2.dll</b>一个文件</p>
		<hr />
		<h2>
				<a name="configuration">
				</a>设置</h2>
		<h3>
				<a name="conTomcat">
				</a>Tomcat</h3>
		<p>进入 Tomcat's <b>conf\</b> 文件夹.</p>
		<blockquote>
				<p>
						<img height="173" src="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/images/19.gif" width="323" />
				</p>
		</blockquote>
		<p>要支持 JK2 连接器, 你可能需要修改<b>jk2.properties</b>文件. 大多数情况下保留此文件的默认状态即可，本人的多次配置过程都没有修改过这个文件。</p>
		<blockquote>
				<pre>## THIS FILE MAY BE OVERRIDEN AT RUNTIME. MAKE SURE TOMCAT IS STOPED
## WHEN YOU EDIT THE FILE.

## COMMENTS WILL BE _LOST_

## DOCUMENTATION OF THE FORMAT IN JkMain javadoc.

# Set the desired handler list
# handler.list=apr,request,channelJni
#
# Override the default port for the socketChannel
# channelSocket.port=8019
# Default: 
# channelUnix.file=${jkHome}/work/jk2.socket
# Just to check if the the config  is working
# shm.file=${jkHome}/work/jk2.shm

# In order to enable jni use any channelJni directive
# channelJni.disabled = 0
# And one of the following directives:

# apr.jniModeSo=/opt/apache2/modules/mod_jk2.so

# If set to inprocess the mod_jk2 will Register natives itself
# This will enable the starting of the Tomcat from mod_jk2
# apr.jniModeSo=inprocess
</pre>
		</blockquote>
		<p>现在轮到<b>workers2.properties，</b>这个文件需要自己创建，内容如下(附件中有一个<a href="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/software/workers2.properties" target="_blank">copy</a>)<br />红色的这行要注意了，把"<span style="COLOR: red">C:\Tomcat 5.0\work\</span>"这个路径修改成你自己的路径，而jk2.shm这个文件不用担心，它现在不存在也没有关系，它会在需要的时候自动被创建。<br /></p>
		<blockquote>
				<pre>[shm:]
info=Shared memory file. Required for multiprocess servers
file=<span style="COLOR: red">C:\Tomcat 5.0\work\jk2.shm</span>
size=1000000

[channel.socket:localhost:8009]
info=Ajp13 worker, connects to tomcat instance using AJP 1.3 protocol
tomcatId=localhost:8009

[uri:/jsp-examples/*]
info=JSP examples, map requests for all JSP pages to Tomcat.
context=/jsp-examples

[uri:/servlets-examples/*]
info=Servlet examples, map requests for all servlets to Tomcat.
context=/servlets-examples
</pre>
		</blockquote>
		<p>看过网上的讨论，有些朋友配置过程中的问题就出现在这里，所以多讲几句：<br />这个文件中指定了解析jsp的目录，也就是"http://xxxxx/dir/aa.jsp"这个url中的"dir"，比如我们的网站中要增加/dir/这个路径，并使这个路径下面的jsp能够被解析，那你就需要在<b>workers2.properties</b>文件中增加这样一段话</p>
		<blockquote>
				<p>[uri:/dir/*] <br />info=JSP examples, map requests for all JSP pages to Tomcat. <br />context=/dir </p>
		</blockquote>
		<p>并且在Tomcat的工作目录中建立"/dir/"这个目录。比如我们到现在为止，Tomcat的工作目录是默认的"/ROOT/"，那我们就需要在"/ROOT/"路径下新建"/dir/"目录，并放置aa.jsp文件。重起服务之后，我们才能用"http://xxxxx/dir/aa.jsp"这样的url来访问aa.jsp文件。<br />过去有的朋友误以为"dir"是IIS工作目录中的路径，运行时无法显示页面，或者jsp代码没有解析，其实就是这个路径设置的问题。<br />值得注意的是如果IIS和Tomcat的工作目录同时存在"/dir/"，那么服务器会把此路径连接至Tomcat处理。 <br />当你的Tomcat和IIS一起正常工作后，你可以随时修改这个文件以增加新的目录来支持jsp的运行。</p>
		<p>这里是关于<a href="http://jakarta.apache.org/tomcat/tomcat-4.1-doc/jk2/jk2/configweb.html">worker2.properties</a>这个文件更多的规则。</p>
		<p>右键系统栏中的Tomcat服务图标，选择"<strong>Stop service</strong>"，关闭服务。</p>
		<blockquote>
				<p>
						<img height="113" src="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/images/21.gif" width="129" />
				</p>
		</blockquote>
		<p>在"<strong>管理工具-服务</strong>"中找到"<strong>Apache Tomcat</strong>"服务，并确定它已经启动。</p>
		<blockquote>
				<p>
						<img height="138" src="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/images/22.gif" width="546" />
				</p>
		</blockquote>
		<hr />
		<h3>
				<a name="conConnector">
				</a>Tomcat IIS 连接器</h3>
		<p>你已经放置<b>isapi_redirector2.dll</b>在你的路径下，本例子中是<br />C:\Tomcat 5.0\bin\win32\i386</p>
		<blockquote>
				<p>
						<img height="116" src="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/images/23.gif" width="299" />
				</p>
		</blockquote>
		<p>现在需要添加一些必要的注册信息到注册表，redirector被IIS调用时会读到。建立一个.reg文件</p>
		<blockquote>
				<pre>Windows Registry Editor Version 5.00</pre>
				<p>[HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Jakarta Isapi Redirector\2.0]<br />"workersFile"="C:\\Tomcat 5.0\\conf\\workers2.properties"<br />"extensionUri"="/jakarta/isapi_redirector2.dll"<br />"logLevel"="debug"<br />"serverRoot"="C:\\Tomcat 5.0\\"</p>
		</blockquote>
		<p>在记事本中写入上面的文字，并保存为 reg.reg (附件中有一个<a href="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/software/reg.reg" target="_blank">copy</a>)</p>
		<p>双击.reg文件</p>
		<blockquote>
				<p>
						<img height="121" src="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/images/24.gif" width="401" />
				</p>
		</blockquote>
		<p>成功则显示如下:</p>
		<blockquote>
				<p>
						<img height="119" src="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/images/25.gif" width="380" />
				</p>
		</blockquote>
		<p>注册表中可以看到:</p>
		<blockquote>
				<p>
						<img height="432" src="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/images/26.gif" width="519" />
				</p>
				<p> </p>
		</blockquote>
		<p>现在可以删除这个.reg文件了 </p>
		<hr />
		<h3>
				<a name="conWindows">
				</a>Windows</h3>
		<p>添加两个系统环境变量，他们是<b>CATALINA_HOME</b>和<b>JAVA_HOME</b>.</p>
		<p>在桌面上右键"我的电脑"，选择"属性-高级-环境变量"</p>
		<blockquote>
				<img height="392" src="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/images/27.gif" width="383" />
		</blockquote>
		<p>
				<b>CATALINA_HOME</b> 指向你的Tomcat安装目录,本例子中是 C:\Tomcat 5.0</p>
		<p>
				<b>JAVA_HOME</b> 指向Java SDK安装目录，本例子中是 C:\j2sdk1.4.2_04</p>
		<hr />
		<h3>
				<a name="conIIS">
				</a>IIS</h3>
		<h4>
				<a name="conIIS2">
				</a>安装ISAPI筛选器</h4>
		<p>进入<b>ISAPI筛选器</b> 界面</p>
		<blockquote>
				<p>
						<img height="492" src="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/images/28.gif" width="480" />
				</p>
		</blockquote>
		<p>点击 <b>添加 </b>按钮，键入一个新的筛选器名称，名称可以随意起</p>
		<blockquote>
				<p>
						<img height="153" alt="IIS Add ISAPI Filter dialog" src="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/images/29.gif" width="346" />
				</p>
		</blockquote>
		<p>再点击 <strong>浏览</strong> 按钮，选择<b>isapi_redirector2.dll。</b>本例子中是 <br />C:\Tomcat 5.0\bin\win32\i386\isapi_redirector2.dll</p>
		<blockquote>
				<p>
						<img height="153" src="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/images/29.gif" width="346" />
				</p>
		</blockquote>
		<p>点击<strong>确定。</strong>IIS重起之后新的筛选器才会生效，我们先不重起，稍后再做。</p>
		<blockquote>
				<p>
						<img height="135" src="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/images/30.gif" width="279" />
				</p>
		</blockquote>
		<p>点击<b>确定</b>保存修改，退出站点属性对话框<b>。</b></p>
		<p>
				<b>注意Note</b>: 你可以选择特定的站点进行设置，增加筛选器，也可以对所有站点同时增加筛选器<br />在IIS树中右键左侧的"<strong>计算机</strong>"，调出<strong>属性</strong>，选择"<strong>编辑</strong>"调出<strong>主属性</strong>对话框</p>
		<blockquote>
				<p>
						<img height="452" src="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/images/31.gif" width="640" />
				</p>
		</blockquote>
		<p>调出<strong>主属性</strong>对话框，添加<strong>筛选器。</strong></p>
		<blockquote>
				<p>
						<img height="491" src="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/images/32.gif" width="480" />
				</p>
		</blockquote>
		<p>
		</p>
		<hr />
		<h4>
				<a name="conIIS3">
				</a>创建筛选器所需要的虚拟目录</h4>
		<p>选择需要加载Tomcat服务站点，右键选择<strong>新建</strong>,再选择<strong>虚拟目录</strong></p>
		<blockquote>
				<p>
						<img height="326" src="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/images/33.gif" width="347" />
				</p>
		</blockquote>
		<p>创建虚拟目录，别名为<b>jakarta</b>。注意这个名字是固定值，不要拼写错误！</p>
		<blockquote>
				<p>
						<img height="356" src="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/images/34.gif" width="593" />
				</p>
		</blockquote>
		<p>指定目录为<b>isapi_redirector2.dll</b>所在目录. 本例子中是 C:\Tomcat 5.0\bin\win32\i386</p>
		<blockquote>
				<p>
						<img height="359" src="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/images/35.gif" width="593" />
				</p>
		</blockquote>
		<p>选择<strong>执行</strong>，使之可用</p>
		<blockquote>
				<p>
						<img height="358" src="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/images/11.gif" width="593" />
				</p>
		</blockquote>
		<p>成功建立虚拟目录之后，你应该在管理其中看到如下显示。</p>
		<blockquote>
				<p>
						<img height="254" src="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/images/36.gif" width="348" />
				</p>
		</blockquote>
		<blockquote> </blockquote>
		<hr />
		<h4>
				<a name="conIIS5">
				</a>重新启动IIS服务</h4>
		<p>选择<strong>计算机</strong>，右键，选择<strong>重新启动IIS</strong></p>
		<blockquote>
				<p>
						<img height="324" src="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/images/12.gif" width="249" />
				</p>
		</blockquote>
		<p>选择<strong>重新启动Internet服务</strong>，点击确定</p>
		<blockquote>
				<p>
						<img height="222" src="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/images/13.gif" width="403" />
				</p>
		</blockquote>
		<p>操作系统中<strong>管理工具</strong>-<strong>事件查看器</strong>中可以查看服务的启动情况，isapi_redirector2.dll会把它的出错信息写入<strong>事件查看器</strong>，而不是像较早版本那样写入一个文件中。</p>
		<p>启动之后在IIS控制台，<strong>站点属性</strong>中的<b>ISAPI</b><strong>筛选器</strong>的列表中，可以看到Tomcat连接器的状态，有绿色向上箭头就对了</p>
		<blockquote>
				<p>
						<img height="316" src="http://hh.cc163.com/java/NewIIS5+TomcatHowTo/images/37.gif" width="481" />
				</p>
		</blockquote>
		<hr />
		<h2>
				<a name="testing">
				</a>测试</h2>
		<h3>
				<a name="tstTomcat">
				</a>Tomcat</h3>
		<p>首先测试Tomcat安装的例子能否运行，使用Tomcat自己的服务器和端口</p>
		<p>测试服务器中的servlets: <a href="http://localhost:8080/servlets-examples/" target="external">http://localhost:8080/servlets-examples/</a></p>
		<p>测试服务器中的JSP: <a href="http://localhost:8080/jsp-examples/" target="external">http://localhost:8080/jsp-examples/</a></p>
		<p>测试Tomcat管理界面: <a href="http://127.0.0.1:8080/admin/" target="external">http://127.0.0.1:8080/admin/</a></p>
		<h3>
				<a name="tstIIS">
				</a>IIS</h3>
		<p>现在我们访问IIS中的同一个例子，来测试连接器是否工作，注意修改地址和端口跟你的IIS相符合</p>
		<p>
				<a href="http://localhost/servlets-examples/" target="external">http://localhost/servlets-examples/</a>
		</p>
		<p>
				<a href="http://localhost/jsp-examples/" target="external">http://localhost/jsp-examples/</a>
		</p>
		<p> </p>
		<p>如果一切正常，则你已经使得IIS5在Tomcat JK2 IIS 连接器的工作下可以解析jsp&amp;servlet程序了，祝贺你。<br />并乐意得到你的经验和对此文章的反馈。(<a href="http://hh.cc163.com/form/cgi-bin/forums.cgi?forum=4" target="_blank">http://hh.cc163.com/form/cgi-bin/forums.cgi?forum=4</a>)</p>
		<p>希望大家到讨论区发表你的成功经验，以帮助别人。(<a href="http://hh.cc163.com/form/cgi-bin/forums.cgi?forum=4" target="_blank">http://hh.cc163.com/form/cgi-bin/forums.cgi?forum=4</a>)</p>
		<hr />
		<h2>参考文献<a name="credits"></a></h2>
		<p>
				<a href="http://jakarta.apache.org/tomcat/tomcat-4.1-doc/jk2/jk/iishowto.html">JK Documentation(iishowto)</a>
				<br />
				<a href="http://virtualict.net/support/kb/iis6-Tomcat5-JK2.html" target="_blank">http://virtualict.net/support/kb/iis6-Tomcat5-JK2.html</a>
		</p>
		<hr />
		<p>原文完整版<br /><a href="http://hh.cc163.com/java/NewIIS5%2BTomcatHowTo/NewIIS5%2BTomcat5HowTo.htm" target="_blank">http://hh.cc163.com/java/NewIIS5+TomcatHowTo/NewIIS5+Tomcat5HowTo.htm</a></p>
		<p> </p>
		<p>----------------------------------------------------------------<br />Email: <a href="mailto:zself@vip.cc163.com">zself@vip.cc163.com</a><br /><a href="http://hh.cc163.com/" target="_blank">http://hh.cc163.com</a><br />Oicq:10743383</p>
<img src ="http://www.blogjava.net/wanspring/aggbug/71693.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wanspring/" target="_blank">春辉</a> 2006-09-25 11:30 <a href="http://www.blogjava.net/wanspring/articles/71693.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat开发技术之与HTTP服务器的集成（3）</title><link>http://www.blogjava.net/wanspring/articles/71687.html</link><dc:creator>春辉</dc:creator><author>春辉</author><pubDate>Mon, 25 Sep 2006 03:28:00 GMT</pubDate><guid>http://www.blogjava.net/wanspring/articles/71687.html</guid><wfw:comment>http://www.blogjava.net/wanspring/comments/71687.html</wfw:comment><comments>http://www.blogjava.net/wanspring/articles/71687.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wanspring/comments/commentRss/71687.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wanspring/services/trackbacks/71687.html</trackback:ping><description><![CDATA[
		<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
				<tbody>
						<tr>
								<td class="Article_tdbgall" align="middle" height="23">作者：孙卫琴 文章来源：赛迪网 点击数：
<script language="javascript" src="/Article/GetHits.asp?ArticleID=176"></script>
 1408 更新时间：2005-6-12 <a title="收藏的网页将被永久地保存到新浪ViVi收藏夹http://vivi.sina.com.cn" href="javascript:d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(vivi=window.open('http://vivi.sina.com.cn/collect/icollect.php?pid=2008&amp;title='+escape(d.title)+'&amp;url='+escape(d.location.href)+'&amp;desc='+escape(t),'vivi','scrollbars=no,width=480,height=480,left=75,top=20,status=no,resizable=yes'));vivi.focus();"><img src="http://www.mdd.cn/images/vivi_coop1.gif" align="absMiddle" border="0" /></a></td>
						</tr>
						<tr>
								<td height="6">
								</td>
						</tr>
						<tr>
								<td id="fontzoom" height="300">
										<p>
										</p>
										<p> </p>
										<p>6、Apache与多个Tomcat服务器集成时的负载平衡</p>
										<p>在实际应用中，如果网站的访问量非常大，为了提高访问速度，可以将多个Tomcat服务器与Apache集成，让它们共同分担运行Servlet/JSP组件的任务。 JK插件的loadbalancer（负载平衡器）负责根据在workers.properties文件中预先配置的lbfactor（负载平衡因数）为这些Tomcat服务器分配工作负荷，实现负载平衡。</p>
										<p>假定Apache和两个Tomcat服务器集成，一个Tomcat服务器和Apache运行在同一台机器上，使用的JK端口为8009，还有一个Tomcat服务器运行在另一台机器上，主机名为anotherhost，使用的JK端口为8009。以下是把Apache和这两个Tomcat服务器集成的步骤。</p>
										<p>（1）把mod_jk_2.0.46.dll拷贝到/lib目录下。<br />（2）在<apache_home>/conf目录下创建如下的workers.properties文件（注意粗体部分的内容）：<br /><br /></apache_home></p>
										<center>
												<ccid_nobr>
														<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1">
																<tbody>
																		<tr>
																				<td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6">
																						<pre>
																								<ccid_code>ps=\ 
#指定文件路径分割符
worker.list=worker1,
worker2,loadbalancer 

worker.worker1.port=8009  
#工作端口，若没占用则不用修改
worker.worker1.host=localhost 
#Tomcat服务器的地址
worker.worker1.type=ajp13 
#类型
worker.worker1.lbfactor=100 
#负载平衡因数

worker.worker2.port=8009 
#工作端口，若没占用则不用修改
worker.worker2.host=anotherhost 
#Tomcat服务器的地址
worker.worker2.type=ajp13 
#类型
worker.worker2.lbfactor=100 
#负载平衡因数

worker.loadbalancer.type=lb
worker.loadbalancer.
balanced_workers=worker1, worker2</ccid_code>
																						</pre>
																				</td>
																		</tr>
																</tbody>
														</table>
												</ccid_nobr>
										</center>
										<p>
												<br />
												<br />以上文件创建了两个worker：worker1和worker2分别代表两个Tomcat服务器，它们由worker.loadbalancer来分配工作负荷。 <br /><br />（3）修改<apache_home>/conf/httpd.conf文件，在文件末尾加入如下内容： <br /><br /></apache_home></p>
										<center>
												<ccid_nobr>
														<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1">
																<tbody>
																		<tr>
																				<td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6">
																						<pre>
																								<ccid_code># Using mod_jk2.dll to 
redirect dynamic calls to Tomcat
LoadModule jk_module
modules\mod_jk_2.0.46.dll
JkWorkersFile "conf\workers.properties"
JkLogFile "logs\mod_jk2.log" 
JkLogLevel debug
JkMount /*.jsp loadbalancer
JkMount /helloapp/* loadbalancer</ccid_code>
																						</pre>
																				</td>
																		</tr>
																</tbody>
														</table>
												</ccid_nobr>
										</center>
										<p>
												<br />
												<br />当客户请求"/*.jsp"或"/helloapp/*"形式的URL，该请求都由loadbalancer来负责转发，它根据在workers.properties文件中为worker1和worker2分配的lbfactor属性，来决定如何调度它们。 <br /><br />只有在使用了loadbalancer的情况下，workers.properties文件中worker的lbfactor属性才有意义，lbfactor取值越大，表示分配给Tomcat服务器的工作负荷越大。 <br /><br />（4）修改两个Tomcat服务器的JK端口，确保它们和workers.properties文件中的配置对应。此外，在使用了loadbalancer后，要求worker的名字和Tomcat的server.xml文件中的<engine>元素的jvmRoute属性一致。 <br /><br />所以应该分别修改两个Tomcat的sever.xml文件，把它们的<engine>元素的jvmRoute属性分别设为worker1和worker2。以下是修改后的两个Tomcat服务器的<engine>元素： <br /><br />Tomcat服务器1: <br /><br /></engine></engine></engine></p>
										<center>
												<ccid_nobr>
														<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1">
																<tbody>
																		<tr>
																				<td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6">
																						<pre>
																								<ccid_code>&lt;Engine name="Catalina"
defaultHost="localhost"
debug="0" jmvRoute="worker1"&gt;</ccid_code>
																						</pre>
																				</td>
																		</tr>
																</tbody>
														</table>
												</ccid_nobr>
										</center>
										<p>
												<br />
												<br />Tomcat服务器2: <br /><br /></p>
										<center>
												<ccid_nobr>
														<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1">
																<tbody>
																		<tr>
																				<td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6">
																						<pre>
																								<ccid_code>&lt;Engine name="Catalina"
defaultHost="localhost" 
debug="0" jmvRoute="worker2"&gt;</ccid_code>
																						</pre>
																				</td>
																		</tr>
																</tbody>
														</table>
												</ccid_nobr>
										</center>
										<p>
												<br />
												<br />（5）在完成以上步骤后，分别启动两个Tomcat服务器和Apache服务器，然后访问http://localhost/index.jsp，会出现Tomcat服务器的默认主页。由于此时由loadbalancer来调度Tomcat服务器，因此不能断定到底访问的是哪个Tomcat服务器的index.jsp，这对于Web客户来说是透明的。 <br /><br />如果在进行以上实验时，两个Tomcat服务器都在同一台机器上运行，应该确保它们没有使用相同的端口。在Tomcat的默认的server.xml中，一共配置了以下3个端口： <br /><br /></p>
										<center>
												<ccid_nobr>
														<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1">
																<tbody>
																		<tr>
																				<td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6">
																						<pre>
																								<ccid_code>&lt;Server port="8005" 
shutdown="SHUTDOWN" debug="0"&gt;
&lt;!-- Define a non-SSL Coyote
HTTP/1.1 Connector on port 8080 --&gt;
&lt;Connector port="8080" /&gt;
&lt;!-- Define a Coyote/JK2 
AJP 1.3 Connector on port 8009 --&gt;
&lt;Connector port="8009" /&gt;</ccid_code>
																						</pre>
																				</td>
																		</tr>
																</tbody>
														</table>
												</ccid_nobr>
										</center>
										<p>
												<br />
												<br />如果两个Tomcat服务器都在同一台机器上运行，则至少应该对其中一个Tomcat服务器的以上3个端口号都进行修改。 <br /><br />此外，如果把Tomcat和其他HTTP服务器集成，Tomcat主要负责处理HTTP服务器转发过来的客户请求，通常不会直接接受HTTP请求。因此为了提高Tomcat的运行性能，可以关闭Tomcat的HTTP连接器，方法为在server.xml中把Tomcat的HTTP Connector的配置注释掉。</p>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/wanspring/aggbug/71687.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wanspring/" target="_blank">春辉</a> 2006-09-25 11:28 <a href="http://www.blogjava.net/wanspring/articles/71687.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat开发技术之与HTTP服务器的集成（1）</title><link>http://www.blogjava.net/wanspring/articles/71686.html</link><dc:creator>春辉</dc:creator><author>春辉</author><pubDate>Mon, 25 Sep 2006 03:28:00 GMT</pubDate><guid>http://www.blogjava.net/wanspring/articles/71686.html</guid><wfw:comment>http://www.blogjava.net/wanspring/comments/71686.html</wfw:comment><comments>http://www.blogjava.net/wanspring/articles/71686.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wanspring/comments/commentRss/71686.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wanspring/services/trackbacks/71686.html</trackback:ping><description><![CDATA[
		<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
				<tbody>
						<tr>
								<td class="Article_tdbgall" align="middle" height="23">作者：孙卫琴 文章来源：赛迪网 点击数：
<script language="javascript" src="/Article/GetHits.asp?ArticleID=176"></script>
 1407 更新时间：2005-6-12 <a title="收藏的网页将被永久地保存到新浪ViVi收藏夹http://vivi.sina.com.cn" href="javascript:d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(vivi=window.open('http://vivi.sina.com.cn/collect/icollect.php?pid=2008&amp;title='+escape(d.title)+'&amp;url='+escape(d.location.href)+'&amp;desc='+escape(t),'vivi','scrollbars=no,width=480,height=480,left=75,top=20,status=no,resizable=yes'));vivi.focus();"><img src="http://www.mdd.cn/images/vivi_coop1.gif" align="absMiddle" border="0" /></a></td>
						</tr>
						<tr>
								<td height="6">
								</td>
						</tr>
						<tr>
								<td id="fontzoom" height="300">
										<p>Tomcat最主要的功能是提供Servlet/JSP容器，尽管它也可以作为独立的Java Web服务器，它在对静态资源（如HTML文件或图像文件）的处理速度，以及提供的Web服务器管理功能方面都不如其他专业的HTTP服务器，如IIS和Apache服务器。</p>
										<p>因此在实际应用中，常常把Tomcat与其他HTTP服务器集成。对于不支持Servlet/JSP的HTTP服务器，可以通过Tomcat服务器来运行Servlet/JSP组件。</p>
										<p>当Tomcat与其他HTTP服务器集成时，Tomcat服务器的工作模式通常为进程外的Servlet容器，Tomcat服务器与其他HTTP服务器之间通过专门的插件来通信。关于Tomcat服务器的工作模式的概念可以参考本书1.4节。</p>
										<p>本章首先讨论Tomcat与HTTP服务器集成的一般原理，然后介绍Tomcat与Apache以及IIS集成的详细步骤。</p>
										<p>22.1 Tomcat与HTTP服务器集成的原理</p>
										<p>Tomcat服务器通过Connector连接器组件与客户程序建立连接，Connector组件负责接收客户的请求，以及把Tomcat服务器的响应结果发送给客户。默认情况下，Tomcat在server.xml中配置了两种连接器：</p>
										<p>
												<br />
												<br /> </p>
										<center>
												<ccid_nobr>
														<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1">
																<tbody>
																		<tr>
																				<td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6">
																						<pre>
																								<ccid_code>&lt;!-- Define a non-SSL Coyote HTTP/1.1
Connector on port 8080 --&gt;
    &lt;Connector port="8080"
               maxThreads="150" 
			   minSpareThreads="25" 
			   maxSpareThreads="75"
               enableLookups="false"
			   redirectPort="8443" 
			   acceptCount="100"
               debug="0" 
			   connectionTimeout="20000" 
               disableUploadTimeout="true" /&gt;

    &lt;!-- Define a Coyote/JK2 AJP 1.3 
	Connector on port 8009 --&gt;
    &lt;Connector port="8009" 
               enableLookups="false"
			   redirectPort="8443" debug="0"
               protocol="AJP/1.3" /&gt;</ccid_code>
																						</pre>
																				</td>
																		</tr>
																</tbody>
														</table>
												</ccid_nobr>
										</center>
										<p>
												<br />
												<br />第一个连接器监听8080端口，负责建立HTTP连接。在通过浏览器访问Tomcat服务器的Web应用时，使用的就是这个连接器。 <br /><br />第二个连接器监听8009端口，负责和其他的HTTP服务器建立连接。在把Tomcat与其他HTTP服务器集成时，就需要用到这个连接器。 <br /><br />Web客户访问Tomcat服务器上JSP组件的两种方式如图22-1所示。 <br /><br /></p>
										<center>
												<img src="http://www.mdd.cn/Article/UploadFiles/200506/20050612113943341.gif" />
										</center>
										<p>
												<br />
												<br /> </p>
										<center>图22-1 Web客户访问Tomcat服务器上的JSP组件的两种方式</center>
										<p>
												<br />
												<br />在图22-1中，Web客户1直接访问Tomcat服务器上的JSP组件，他访问的URL为http://localhost:8080/index.jsp。Web客户2通过HTTP服务器访问Tomcat服务器上的JSP组件。假定HTTP服务器使用的HTTP端口为默认的80端口，那么Web客户2访问的URL为http://localhost:80/index.jsp 或者 http://localhost/index.jsp。 <br /><br />下面，介绍Tomcat与HTTP服务器之间是如何通信的。 <br /><br />22.1.1 JK插件 <br /><br />Tomcat提供了专门的JK插件来负责Tomcat和HTTP服务器的通信。应该把JK插件安置在对方的HTTP服务器上。当HTTP服务器接收到客户请求时，它会通过JK插件来过滤URL，JK插件根据预先配置好的URL映射信息，决定是否要把客户请求转发给Tomcat服务器处理。 <br /><br />假定在预先配置好的URL映射信息中，所有"/*.jsp"形式的URL都由Tomcat服务器来处理，那么在图22-1的例子中，JK插件将把客户请求转发给Tomcat服务器，Tomcat服务器于是运行index.jsp，然后把响应结果传给HTTP服务器，HTTP服务器再把响应结果传给Web客户2。 <br /><br />对于不同的HTTP服务器，Tomcat提供了不同的JK插件的实现模块。本章将用到以下JK插件： <br /><br />与Windows下的Apache HTTP服务器集成：mod_jk_2.0.46.dll <br /><br />与Linux（RedHet）下的Apache HTTP服务器集成：mod_jk.so-ap2.0.46-rh72..46-rh72 <br /><br />与IIS服务器集成：isapi_redirect.dll </p>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/wanspring/aggbug/71686.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wanspring/" target="_blank">春辉</a> 2006-09-25 11:28 <a href="http://www.blogjava.net/wanspring/articles/71686.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat开发技术之与HTTP服务器的集成（2）</title><link>http://www.blogjava.net/wanspring/articles/71683.html</link><dc:creator>春辉</dc:creator><author>春辉</author><pubDate>Mon, 25 Sep 2006 03:28:00 GMT</pubDate><guid>http://www.blogjava.net/wanspring/articles/71683.html</guid><wfw:comment>http://www.blogjava.net/wanspring/comments/71683.html</wfw:comment><comments>http://www.blogjava.net/wanspring/articles/71683.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wanspring/comments/commentRss/71683.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wanspring/services/trackbacks/71683.html</trackback:ping><description><![CDATA[
		<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
				<tbody>
						<tr>
								<td class="main_ArticleTitle" style="WORD-BREAK: break-all" align="middle" height="35">Tomcat开发技术之与HTTP服务器的集成</td>
						</tr>
						<tr>
								<td class="main_ArticleSubheading" style="WORD-BREAK: break-all">
								</td>
						</tr>
						<tr>
								<td class="Article_tdbgall" align="middle" height="23">作者：孙卫琴 文章来源：赛迪网 点击数：
<script language="javascript" src="/Article/GetHits.asp?ArticleID=176"></script>
 1406 更新时间：2005-6-12 <a title="收藏的网页将被永久地保存到新浪ViVi收藏夹http://vivi.sina.com.cn" href="javascript:d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(vivi=window.open('http://vivi.sina.com.cn/collect/icollect.php?pid=2008&amp;title='+escape(d.title)+'&amp;url='+escape(d.location.href)+'&amp;desc='+escape(t),'vivi','scrollbars=no,width=480,height=480,left=75,top=20,status=no,resizable=yes'));vivi.focus();"><img src="http://www.mdd.cn/images/vivi_coop1.gif" align="absMiddle" border="0" /></a></td>
						</tr>
						<tr>
								<td height="6">
								</td>
						</tr>
						<tr>
								<td id="fontzoom" height="300">
										<p>
										</p>
										<p> </p>
										<p>22.1.2 AJP协议</p>
										<p>AJP是为Tomcat与HTTP服务器之间通信而定制的协议，能提供较高的通信速度和效率。在配置Tomcat与HTTP服务器集成中，读者可以不必关心AJP协议的细节。关于AJP的知识也可以参考网址：</p>
										<p>
												<a href="http://jakarta.apache.org/builds/jakarta-tomcat-connectors/jk2/doc/common/AJPv13.html">http://jakarta.apache.org/builds/jakarta-tomcat-connectors/jk2/doc/common/AJPv13.html</a>
										</p>
										<p>22.2 在Windows下Tomcat与Apache服务器集成</p>
										<p>Apache HTTP服务器是Apache软件组织提供的开放源代码软件，它是一个非常优秀的专业的Web服务器，为网络管理员提供了丰富多彩的Web管理功能，包括目录索引、目录别名、内容协商、可配置的HTTP错误报告、CGI程序的SetUID执行、子进程资源管理、服务器端图像映射、重写URL、URL拼写检查以及联机手册等。<br />Apache HTTP服务器本身没有提供Servlet/JSP容器。因此，在实际应用中，把Tomcat与Apache集成，可以建立具有实用价值的商业化的Web平台。在Windows NT/2000下Tomcat与Apache服务器集成需要准备的软件参见表22-1。<br /><br />表22-1 在Windows NT/2000下Tomcat与Apache服务器集成需要准备的软件<br /><br /></p>
										<center>
												<ccid_nobr>
														<table border="1">
																<tbody>
																		<tr>
																				<td>软 件</td>
																				<td>下 载 位 置</td>
																				<td>本书配套光盘上的位置</td>
																		</tr>
																		<tr>
																				<td>基于Windows NT/2000的 Apache HTTP服务器软件</td>
																				<td>http://httpd.apache.org /download.cgi</td>
																				<td>software/apache_2.0.47- win32-x86-no_ssl.msi</td>
																		</tr>
																		<tr>
																				<td>JK插件</td>
																				<td>http://jakarta.apache.org/builds /jakarta-tomcat-connectors/jk</td>
																				<td>lib/ mod_jk_2.0.46.dll</td>
																		</tr>
																</tbody>
														</table>
												</ccid_nobr>
										</center>
										<p>
												<br />
												<br />1、安装Apache HTTP服务器 <br /><br />运行apache_2.0.47-win32-x86-no_ssl.msi，就启动了Apache HTTP服务器的安装程序，只要按默认设置进行安装即可。如果安装成功，会自动在Windows中加入Apache HTTP服务，如图22-2所示。 <br /><br /></p>
										<center>
												<img src="http://www.mdd.cn/Article/UploadFiles/200506/20050612113943774.jpg" />
										</center>
										<p>
												<br />
												<br /> </p>
										<center>图22-2 加入到Windows服务中的Apache服务</center>
										<p>
												<br />
												<br />假定Apache的根目录为<apache_home>，在其conf子目录下有一个配置文件httpd.conf。如果Apache安装在本机，并且采用默认的80端口作为HTTP端口，在httpd.conf文件中会看到如下属性： <br /><br /></apache_home></p>
										<center>
												<ccid_nobr>
														<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1">
																<tbody>
																		<tr>
																				<td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6">
																						<pre>
																								<ccid_code>Listen 80
ServerName localhost:80</ccid_code>
																						</pre>
																				</td>
																		</tr>
																</tbody>
														</table>
												</ccid_nobr>
										</center>
										<p>
												<br />
												<br />在操作系统的【开始】→【程序】→【Apache HTTP Server 2.0.47】→【Control Apache Server】菜单中，提供了重启（Restart）、启动（Start）和关闭（Stop）Apache服务器的子菜单。 <br /><br />应该确保80端口没有被占用，否则Apache服务器无法启动。Apache服务器启动后，就可以通过访问Apache的测试页来确定是否安装成功。访问http://localhost，如果出现如图22-3所示的网页，就说明Apache已经安装成功了。 <br /><br /></p>
										<center>
												<img src="http://www.mdd.cn/Article/UploadFiles/200506/20050612113944778.jpg" />
										</center>
										<p>
												<br />
												<br /> </p>
										<center>图22-3 Apache服务器的测试网页</center>
										<p>
												<br />
												<br />2、在Apache中加入JK插件 <br /><br />在Apache中加入JK插件，只要把mod_jk_2.0.46.dll拷贝到<apache_home>/modules目录下即可。 <br /><br />3、创建workers.properties文件 <br /><br />workers.properties文件用于配置Tomcat的信息，它的存放位置为<apache_home> /conf/workers.properties。在本书配套光盘的sourcecode/chapter22/windows_apache目录下提供了workers.properties文件，它的内容如下（"#"后面为注释信息）： <br /><br /></apache_home></apache_home></p>
										<center>
												<ccid_nobr>
														<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1">
																<tbody>
																		<tr>
																				<td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6">
																						<pre>
																								<ccid_code>workers.tomcat_home=C:\jakarta-tomcat 
#让mod_jk模块知道Tomcat
workers.java_home=C:\j2sdk1.4.2
#让mod_jk模块知道j2sdk
ps=\ 
#指定文件路径分割符
worker.list=worker1 
worker.worker1.port=8009 
#工作端口，若没占用则不用修改
worker.worker1.host=localhost 
#Tomcat服务器的地址
worker.worker1.type=ajp13
#类型
worker.worker1.lbfactor=1
#负载平衡因数</ccid_code>
																						</pre>
																				</td>
																		</tr>
																</tbody>
														</table>
												</ccid_nobr>
										</center>
										<p>
												<br />
												<br />以上文件中的属性描述参见表22-2。 <br /><br />表22-2 workers.properties文件的属性 <br /><br /></p>
										<center>
												<ccid_nobr>
														<table border="1">
																<tbody>
																		<tr>
																				<td>属 性</td>
																				<td>描 述</td>
																		</tr>
																		<tr>
																				<td>workers.tomcat_home</td>
																				<td>指定Tomcat服务器的根目录</td>
																		</tr>
																		<tr>
																				<td>workers.java_home</td>
																				<td>指定JDK的根目录</td>
																		</tr>
																		<tr>
																				<td>worker.list</td>
																				<td>指定Tomcat服务器工作名单</td>
																		</tr>
																		<tr>
																				<td>worker.worker1.port</td>
																				<td>指定Tomcat服务器使用的JK 端口</td>
																		</tr>
																		<tr>
																				<td>worker.worker1.host</td>
																				<td>指定Tomcat服务器的IP地址</td>
																		</tr>
																		<tr>
																				<td>worker.worker1.type</td>
																				<td>指定Tomcat服务器 与Apache之间的通信协议</td>
																		</tr>
																		<tr>
																				<td>worker.worker1.lbfactor</td>
																				<td>指定负载平衡因数（Load Balance Factor）。 只有在使用了负载平衡器 (LoadBalancer)的情况下， 这个属性才有意义</td>
																		</tr>
																</tbody>
														</table>
												</ccid_nobr>
										</center>
										<p>
												<br />
												<br />4、修改Apache的配置文件httpd.conf <br /><br />打开<apache_home>/conf/httpd.conf文件，在其末尾加入以下内容： <br /><br /></apache_home></p>
										<center>
												<ccid_nobr>
														<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1">
																<tbody>
																		<tr>
																				<td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6">
																						<pre>
																								<ccid_code># Using mod_jk2.dll to 
redirect dynamic calls to Tomcat
LoadModule  jk_module  
modules\mod_jk_2.0.46.dll
JkWorkersFile 
"conf\workers.properties"
JkLogFile  "logs\mod_jk2.log" 
JkLogLevel  debug
JkMount  /*.jsp  worker1
JkMount  /helloapp/*  worker1</ccid_code>
																						</pre>
																				</td>
																		</tr>
																</tbody>
														</table>
												</ccid_nobr>
										</center>
										<p>
												<br />
												<br />在本书配套光盘的sourcecode/chapter22/windows_apache/httpd_modify.conf文件中提供了以上内容，它指示Apache服务器加载JK插件，并且为JK插件设置相关属性，这些属性的描述参见表22-3。 <br /><br />表22-3 JK插件的相关属性 <br /><br /></p>
										<center>
												<ccid_nobr>
														<table border="1">
																<tbody>
																		<tr>
																				<td>属 性</td>
																				<td>描 述</td>
																		</tr>
																		<tr>
																				<td>LoadModule</td>
																				<td>指定加载的JK插件</td>
																		</tr>
																		<tr>
																				<td>JkWorkersFile</td>
																				<td>指定JK插件的工作文件</td>
																		</tr>
																		<tr>
																				<td>JkLogFile</td>
																				<td>指定JK插件使用的日志文件， 在实际配置中，可以通过查看这个日志文件， 来跟踪JK插件的运行过程， 这对排错很有用</td>
																		</tr>
																		<tr>
																				<td>JkLogLevel</td>
																				<td>指定JK插件的日志级别， 可选值包括debug、info和error等</td>
																		</tr>
																		<tr>
																				<td>JkMount</td>
																				<td>指定JK插件处理的URL映射信息</td>
																		</tr>
																</tbody>
														</table>
												</ccid_nobr>
										</center>
										<p>
												<br />
												<br />JkMount用来指定URL映射信息，"JkMount /*.jsp worker1"表示"/*.jsp"形式的URL都由worker1代表的Tomcat服务器来处理；"JkMount /helloapp/* worker1"表示访问helloapp应用的URL都由worker1来处理。 <br /><br />5、测试配置 <br /><br />重启Tomcat服务器和Apache服务器，通过浏览器访问http://localhost/index.jsp，如果出现Tomcat的默认主页，说明配置已经成功。此外，如果在Tomcat服务器上已经发布了helloapp应用，可以访问http://localhost/helloapp/index.htm，如果正常返回helloapp应用的index.htm网页，说明配置已经成功。 <br /><br />如果配置有误，可以查看JK插件生成的日志信息，它有助于查找错误原因。在Apache的配置文件httpd.conf中设定该日志文件的存放位置为<apache_home>/logs/mod_jk2.log </apache_home></p>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/wanspring/aggbug/71683.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wanspring/" target="_blank">春辉</a> 2006-09-25 11:28 <a href="http://www.blogjava.net/wanspring/articles/71683.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>