﻿<?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-兼容并包，思想自由-随笔分类-40.Web Servers(Tomcat/Jboss/Websphere)</title><link>http://www.blogjava.net/Steven-Liu/category/9312.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 02 Mar 2007 06:48:01 GMT</lastBuildDate><pubDate>Fri, 02 Mar 2007 06:48:01 GMT</pubDate><ttl>60</ttl><item><title>Tomcat与Http服务器的集成</title><link>http://www.blogjava.net/Steven-Liu/archive/2006/04/06/39667.html</link><dc:creator>Steven Liu</dc:creator><author>Steven Liu</author><pubDate>Thu, 06 Apr 2006 11:44:00 GMT</pubDate><guid>http://www.blogjava.net/Steven-Liu/archive/2006/04/06/39667.html</guid><wfw:comment>http://www.blogjava.net/Steven-Liu/comments/39667.html</wfw:comment><comments>http://www.blogjava.net/Steven-Liu/archive/2006/04/06/39667.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Steven-Liu/comments/commentRss/39667.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Steven-Liu/services/trackbacks/39667.html</trackback:ping><description><![CDATA[Tomcat是jsp/servlet container，对静态资源（如HTML文件或图像文件）的处理速度，以及提供的Web服务器管理功能方面都不如其他专业的HTTP服务器，如IIS和Apache服务器。<br />我是以Tomcat5.0.16，apache_2.0.55Http Server，mod_jk-apache-2.0.55.so jk插件进行集成。<br />一、基本原理<br />Tomcat的两个常用连接器，<br />第一个连接器监听8080端口，负责建立HTTP连接。在通过浏览器访问Tomcat服务器的Web应用时，使用的就是这个连接器。　　<br />第二个连接器监听8009端口，负责和其他的HTTP服务器建立连接。在把Tomcat与其他HTTP服务器集成时，就需要用到这个连接器。<br /><img src="c:\2005.6.8.9.44.55.1副本.gif" /><br />查看conf/server.xml文件，<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">Service </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="Catalina"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">Connector </span><span style="COLOR: #ff0000">acceptCount</span><span style="COLOR: #0000ff">="100"</span><span style="COLOR: #ff0000"> connectionTimeout</span><span style="COLOR: #0000ff">="20000"</span><span style="COLOR: #ff0000"> port</span><span style="COLOR: #0000ff">="8080"</span><span style="COLOR: #ff0000"> redirectPort</span><span style="COLOR: #0000ff">="8443"</span><span style="COLOR: #ff0000"> disableUploadTimeout</span><span style="COLOR: #0000ff">="true"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">Connector</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">Connector </span><span style="COLOR: #ff0000">protocol</span><span style="COLOR: #0000ff">="AJP/1.3"</span><span style="COLOR: #ff0000"> port</span><span style="COLOR: #0000ff">="8009"</span><span style="COLOR: #ff0000"> redirectPort</span><span style="COLOR: #0000ff">="8443"</span><span style="COLOR: #ff0000"> protocolHandlerClassName</span><span style="COLOR: #0000ff">="org.apache.jk.server.JkCoyoteHandler"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">Connector</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">Engine </span><span style="COLOR: #ff0000">defaultHost</span><span style="COLOR: #0000ff">="localhost"</span><span style="COLOR: #ff0000"> name</span><span style="COLOR: #0000ff">="Catalina"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">Host </span><span style="COLOR: #ff0000">appBase</span><span style="COLOR: #0000ff">="webapps"</span><span style="COLOR: #ff0000"> name</span><span style="COLOR: #0000ff">="localhost"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">Logger </span><span style="COLOR: #ff0000">className</span><span style="COLOR: #0000ff">="org.apache.catalina.logger.FileLogger"</span><span style="COLOR: #ff0000"> suffix</span><span style="COLOR: #0000ff">=".txt"</span><span style="COLOR: #ff0000"> prefix</span><span style="COLOR: #0000ff">="localhost_log."</span><span style="COLOR: #ff0000"> timestamp</span><span style="COLOR: #0000ff">="true"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">Host</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">Logger </span><span style="COLOR: #ff0000">className</span><span style="COLOR: #0000ff">="org.apache.catalina.logger.FileLogger"</span><span style="COLOR: #ff0000"> suffix</span><span style="COLOR: #0000ff">=".txt"</span><span style="COLOR: #ff0000"> prefix</span><span style="COLOR: #0000ff">="catalina_log."</span><span style="COLOR: #ff0000"> timestamp</span><span style="COLOR: #0000ff">="true"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">Realm </span><span style="COLOR: #ff0000">className</span><span style="COLOR: #0000ff">="org.apache.catalina.realm.UserDatabaseRealm"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">Engine</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">Service</span><span style="COLOR: #0000ff">&gt;</span></div>根据以上Service，可以tomcat的安装目录找到conf/Catalina/localhost目录，里面的XML文件为配置该service所有的Context，一个xml文件对应一个context配置。<br />打开admin.xml，<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">Context </span><span style="COLOR: #ff0000">privileged</span><span style="COLOR: #0000ff">="true"</span><span style="COLOR: #ff0000"> path</span><span style="COLOR: #0000ff">="/admin"</span><span style="COLOR: #ff0000"> displayName</span><span style="COLOR: #0000ff">="Tomcat Administration Application"</span><span style="COLOR: #ff0000"> docBase</span><span style="COLOR: #0000ff">="../server/webapps/admin"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">Logger </span><span style="COLOR: #ff0000">className</span><span style="COLOR: #0000ff">="org.apache.catalina.logger.FileLogger"</span><span style="COLOR: #ff0000"> suffix</span><span style="COLOR: #0000ff">=".txt"</span><span style="COLOR: #ff0000"> prefix</span><span style="COLOR: #0000ff">="localhost_admin_log."</span><span style="COLOR: #ff0000"> timestamp</span><span style="COLOR: #0000ff">="true"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">Context</span><span style="COLOR: #0000ff">&gt;</span></div>可以看到，配置了一个/admin的context，其docBase为/server/webapps/admin。<br /><font color="#ff0000">二、集成目标<br /></font>我们对tomcat和http 服务器进行集成的目标就是：让http服务器在80端口进行监听，如果碰到访问静态的html/图片文件访问，直接由http服务器进行处理。如果碰到jsp/servlet等访问，则通过jk插件，转发到tomcat监听的8009端口，由tomcat处理。<br /><font color="#ff0000">三、实施步骤</font><br />1、安装apache http server, tomcat. 从略。<br />2、安装jk插件。<br />把mod_jk-apache-2.0.55.so拷贝到http server的/modules目录即可。<br />3、配置apache htpp server，打开conf/httpd.conf文件，<br />(1)修改Website根目录，<br />找到DocumentRoot，改为你想放置网站根目录的地方<br />DocumentRoot "D:/java/Tomcat5.0/webapps/ROOT"<br />(2)加载jk插件及配置属性<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">#加载模块<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />LoadModule jk_module modules/mod_jk-apache-</span><span style="COLOR: #000000">2.0.55</span><span style="COLOR: #000000">.so<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />#工作属性文件<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />JkWorkersFile conf/workers.properties<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />#日志存放<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />JkLogFile logs/mod_jk2.log<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />#日志等级<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />JkLogLevel info<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />#日期格式<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />JkLogStampFormat </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">[%a %b %d %H:%M:%S %Y]</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />#日志格式<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />JkRequestLogFormat </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%w %V %T</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />#Url转发到tomcat<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />JkMount /*.jsp worker1<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />JkMount /*.page worker1</span></div>4、新建conf/workers.properties<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">#让mod_jk模块知道Tomcat<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />workers.tomcat_home</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">D:\java\Tomcat5</span><span style="COLOR: #000000">.0</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />　　<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />#让mod_jk模块知道j2sdk<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />workers.java_home</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">D:\java\j2se<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />#所配置的Tomcat列表<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />worker.list</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">worker1<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />#工作端口，若没占用则不用修改<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />worker.worker1.port</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">8009</span><span style="COLOR: #000000">　　<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />　　<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />#Tomcat服务器的地址<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />worker.worker1.host</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">localhost<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />　　<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />#类型<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />worker.worker1.type</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">ajp13</span></div>5、配置tomcat<br />安装tomcat后，会发现webapps已经有许多目录，其中已有一个Root为tomcat默认的"/"context.<br />将tomcat webapps下的一些不需要的目录删去，把Root下的文件删除，并把你需要配置的网站内容拷贝到此目录下。<br />找到conf/Catalina/localhost目录，删除一些没用的xml文件，有些xml文件是tomcat启动时按照webapps的目录自动产生的context。<br />四、开发时配置<br />在进行开发时，如果我们使用的是tomcat，我们可以采用此种方法进行配置。<br />1、通过<a href="http://localhost:6060/index.jsp">http://localhost:6060/index.jsp</a>与<a href="http://localhost/index.jsp">http://localhost/index.jsp</a>访问效果是一样的，<br />但<a href="http://localhost/aBigPicture.gif">http://localhost/aBigPicture.gif</a>的访问可能比直接访问tomcat要快多了。<br />2、进入<a href="http://localhost:6060/admin">http://localhost:6060/admin</a>，默认user:admin,password为空，<br />查看service下面的context，最好把当前开发的web的context的reloadable设置为true，我们所做的修改tomcat会自动重新加载，不用重启tomcat就能立即看到新的变化。<br />3、在eclipse中将网站的源代码发布到tomcat中有两种方法，<br />一种是采用eclipse自带的depoly功能，将web发布到webapps/ROOT目录，或任一目录，对应的只是修改conf/Catalina/localhost的xml文件。<br />另一种方法是采用ant，一个xml文件用于全发布(clean,compile,java,copy)，另一个xml文件则只发布修改的(compile,copy)。<br />小项目用第一种方便，每次修改了源代码，只需刷新一下，eclipse就自动帮你depoly到目的地；<br />当采用第二种时，每次小修改时，需要运行一次ant，把修改的内容重新拷贝并发布过去；如果发布的内容很脏时，有时需全发布(clean,compile,java,copy)。<br /><br />配置httpd.conf和workers.properties的详细内容，请参考：<br /><a href="http://tomcat.apache.org/connectors-doc/">http://tomcat.apache.org/connectors-doc/</a><img src ="http://www.blogjava.net/Steven-Liu/aggbug/39667.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Steven-Liu/" target="_blank">Steven Liu</a> 2006-04-06 19:44 <a href="http://www.blogjava.net/Steven-Liu/archive/2006/04/06/39667.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>