linux和windows下整合思想是相同的,利用apache来解析*.html/*.htm
静态网页,当遇到*.jsp和servlet时,通过一个apache中的module把jsp页面抛给Tomcat(或者
resin)来处理,在linux下通过编译来制作这个module,要麻烦一些,本文通过现成的win下的一
个module来完成整合。

Tomcat的安装
安装目录为
d:\server\tomcat
   下面设置环境变量:(貌似不设也行)
   同jdk的环境变量,添加变量TOMCAT_HOME,值为d:\server\tomcat;增加变量CATALINA_HOME,值为
d:\
server\tomcat,在path变量中加入%TOMCAT_HOME%\bin
   启动tomcat.
   在IE中输入http://localhost:8080/,看到大猫的吧,则tomcat安装成功.

Tomcat和Apache的整合配置
   Tomcat只是一个用来解析*.jsp文件的容器,它不是服务器,其解析静态htm/html文件的能力远远不如apache,
整合后在同一个端口使apache来解析静态网页,而遇到*.jsp网页时,交由tomcat来解析.
  第一步:把 mod_jk.dll复制到apache根目录module文件夹下。
  第二步:配置APACHE

  打开apache根目录下conf\httpd.conf

添加以下语句:

     #------------------------------------------

    #connecting to tomcat using ajp13
    LoadModule jk_module modules/mod_jk.dll
    JkWorkersFile "d:/server/tomcat/conf/workers.properties"
    JkMount /servlet/* ajp13
    JkMount /*.jsp ajp13


    #-----------------------------------------------------

   注意:以上语句的基本意思是:
   loadModule一行:加载mod_jk.dll动态链接库模块,使之与tomcat通讯
   jkWorkersFile:指明工作时tomcat相关文件workers.properties位置
   jkMount:两行指明当遇到*.jsp和servlet时,交由ajp13协议,继而转发给tomcat处理。
  第三步:建立workers.properties文件,在tomcat根目录conf下建立workers.properties文件,内容为:
workers.tomcat_home=d:\server\tomcat
workers.java_home=d:\server\j2sdk1.4.0
ps=\
# worker.list=ajp13
worker.list=ajp12,ajp13 

worker.ajp12.port=8007
worker.ajp12.host=localhost
worker.ajp12.type=ajp12
worker.ajp12.lbfactor=1
            
worker.ajp13.port=8009        
worker.ajp13.host=localhost     
worker.ajp13.type=ajp13
worker.ajp13.lbfactor=1

worker.loadbalancer.type=lb

worker.loadbalancer.balanced_workers=ajp12, ajp13
worker.inprocess.type=jni
worker.inprocess.class_path=$(workers.tomcat_home)$(ps)classes
worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)jaxp.jar

worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)parser.jar

worker.inprocess.class_path=$(workers.tomcat_home)$(ps)common$(ps)lib$(ps)jasper.jar

worker.inprocess.class_path=$(workers.tomcat_home)$(ps)common$(ps)lib$(ps)servlet.jar

worker.inprocess.class_path=$(workers.tomcat_home)$(ps)common$(ps)lib$(ps)webserver.jar

worker.inprocess.class_path=$(workers.java_home)$(ps)lib$(ps)tools.jar

worker.inprocess.cmd_line=-config

worker.inprocess.cmd_line=$(workers.tomcat_home)/conf/jni_server.xml

worker.inprocess.cmd_line=-home

worker.inprocess.cmd_line=$(workers.tomcat_home)

worker.inprocess.jvm_lib=$(workers.java_home)$(ps)jre$(ps)bin$(ps)classic$(ps)jvm.dll


worker.inprocess.stdout=$(workers.tomcat_home)$(ps)inprocess.stdout

worker.inprocess.stderr=$(workers.tomcat_home)$(ps)inprocess.stderr

worker.inprocess.sysprops=tomcat.home=$(workers.tomcat_home)

注意以上文件第一、二行填上tomcat和jdk的相关目录.
 
  第四步:配置tomcat/conf下的server.xml文件,这个是tomcat的主要配置文件,重要配置如下:
    1.虚拟目录设置:
     找到下面内容:
            unpackWARs="true" >
    修改为:
           unpackWARs="true" >
    使tomcat主目录为d:\server\www.
    找到下面内容:
                     reloadable="true" crossContext="true">
    修改为
                     reloadable="true" crossContext="true">
    这个我的理解是应该是使tomcat根目录下的jsp作为一个虚拟主机吧.
   2.设置tomcat监听端口,找到下面的内容:
            port="8080"     minProcessors="5" maxProcessors="75"
               enableLookups="true" redirectPort="8443"
               acceptCount="100" debug="0" connectionTimeout="0"
               useURIValidationHack="false" disableUploadTimeout="true" />
    默认的端口是8080,但这个大家都知道,最好修改一下,假设修改为:8123,则如下:
            port="8123"     minProcessors="5" maxProcessors="75"
               enableLookups="true" redirectPort="8443"
               acceptCount="100" debug="0" connectionTimeout="0"
               useURIValidationHack="false" disableUploadTimeout="true" />
   3.找到以下8009端口的地方,这个很重要,通过8009,tomcat与apache互相通讯,如果下面的部分
注释掉,一定要把去掉.
   
                   port="8009" minProcessors="5" maxProcessors="75"
               enableLookups="true" redirectPort="8443"
               acceptCount="10" debug="0" connectionTimeout="0"
               useURIValidationHack="false"
               protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/>
    第五步:配置tomcat的conf/web.xml文件:
    类似于apache下404错误页面的配置,在最后一行之前加入以下内容:
     
      
        404
        /error/noFile.htm
     

     
       java.lang.NullPointerException
       /error/error.jsp
     

      第一个之间的是404未找到jsp网页的错误导向页面,使之发生404错误时,
网页导向至/error/noFile.htm,也可以用类似方法添加其多的错误代码导向页面。
      第二个之间的是当jsp网页出现java.lang.NullPointerException导常时
导向至/error/error.jsp错误页面。那么需要在第个jsp网页中加入以下内容:
      <%@ page  errorPage="/error/error.jsp" %>
      典型的error.jsp错误页面的程序写法如下:
  
    <%@ page contentType="text/html;charset=GB2312"%>
    <%@ page isErrorPage="true"%>
   
    错误页面

   
    出错了:

错误信息: <%= exception.getMessage() %>

    Stack Trace is :

<%
    java.io.CharArrayWriter cw = new java.io.CharArrayWriter();
    java.io.PrintWriter pw = new java.io.PrintWriter(cw,true);
    exception.printStackTrace(pw);
    out.println(cw.toString());
    %>

   
   
        当出现NullPointerException异常时tomcat会把网页导入到error.jsp,且会打印出出错信息。
        第五步主要是安全考虑,在正常情况下,如果找不到网页即出现404错误或者jsp程序出错,在客户端
    会列举出类似于如下的信息(以tomcat为例,resin类似):
      HTTP Status 404 - /sdags.jsp

      --------------------------------------------------------------------------------

      type Status report

      message /sdags.jsp

      description The requested resource (/sdags.jsp) is not available.


       --------------------------------------------------------------------------------

      Apache Tomcat/5.0.19
     
      这样服务器版本会被别人看到,如果完成第五步的配置,就不会出现这种情况.
    第六步:配置httpd.conf文件
    这种方法把tomcat和apache的根目录设置为同一目录,但是必须限制客户对目录下一些文件的访问,比如存入class
的web-inf,在httpd.conf下添加以下代码:
        #deny the access to WEB-INF
   
          Order allow,deny
          Deny from all
   

     这样,当试图记问http://localhost/web-inf/时,apache将会拒绝.
     
     到此为至,tomcat和apache的整合就完成啦.重新启动tomcat和apache,
 把jsp网页放到d:\server\www\下,例如:
    
   

JSP test

    <%out.println("Hello World!");%>

   
    存为index.jsp,在IE中输入http://localhost:8080/index.jsp
    如果出现了
    Hello World!
    刚说明tomcat运行正常,在IE中输入http://localhost/index.jsp,如果也出现
    Hello World!
    恭喜你!整合成功啦!