`
yfyang919
  • 浏览: 13448 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Tomcat框架学习

阅读更多

 

一、Tomcat介绍


Tomcat服务器是一个免费的开放源代码的Web应用服务器,它是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和JSP规范总是能在Tomcat中得到体现,Tomcat5支持最新的Servlet 2.4和JSP 2.0规范。因为Tomcat技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。


二、Tomcat5目录结构


Tomcat下有9个目录,分别是bin,common,conf,logs,server,shared,temp,webapps,work 目录,现在对每一目录做介绍。Tomcat根目录在tomcat中叫# <CATALINA_HOME>。


<CATALINA_HOME>/bin


存放各种平台下启动和关闭Tomcat的脚本文件。startup.bat是windows下启动tomcat的文件,shutdown.bat是关闭tomcat的文件。


<CATALINA_HOME>/common


在common目录下的lib目录,存放Tomcat服务器和所有web应用都能访问的JAR。


<CATALINA_HOME>/shared


在shared目录下的lib目录,存放所有web应用能访问的,但Tomcat不能访问的JAR。


<CATALINA_HOME>/server


在server/webapps目录中,存放Tomcat自带的两个APP-admin和manager应用,使用来管理Tomcat-web服务用的。在server/lib目录中,存放tomcat服务器所需要的各web应用不能访问种jar。


<CATALINA_HOME>/work


Tomcat把各种由jsp生成的servlet文件放在这个目录下。


<CATALINA_HOME>/temp


临时活页夹,Tomcat运行时候存放临时文件用的。


<CATALINA_HOME>/log


存放Tomcat的日志文件。


<CATALINA_HOME>/conf


Tomcat的各种配置文件,最重要的是 server.xml。(下文将详细介绍此文件)


<CATALINA_HOME>/webapps


web应用的发布目录,把 java开发的web站点或war文件放入这个目录下就可以通过tomcat服务器访问了。


三、Tomcat5的启动


Tomcat的启动是从解析bat文件开始,bat文件最终调用org.apache.catalina.startup.Bootstrap开始类的加载。


Java SE 类加载器介绍


自从J2SE1.2规范以来,JVM就使用三种不同类型的类加载器,分别为Bootstrap类加载器、Extention类加载器和System类加载器。这三个类加载器是一个层次结构,System类加载器在最低端,Bootstrap类加载器在最顶端。它们之间的关系是父子关系,因此System类加载器的父节点是Extention类加载器。


TOMCAT自己的类载入器(ClassLoader)加载流程如下:

  1. Bootstrap 启动类加载器(标准Java SE 类加载器)
    Bootstrap类加载器用来加载启动JVM必须的核心Java类(如java.lang.
    ,java.io.),负责加载类是$JAVA_HOME/jre/lib/*.jar;$JAVA_HOME/jre/classes
  2. Extention 扩展类加载器 (标准Java SE 类加载器)
    一般来说,Java开发人员希望JVM加载指定的类是通过将class或jar设置在CLASSPATH中实现,除此之外Sun公司还介绍了一种标准的扩展机制作,你只需要要将起作用的jar放置在$JAVA_HOME/jre/lib/ext/目录下,那么这个jar中的class就将优先起作用。
  3. System 系统类加载器(标准Java SE 类加载器)
    System加载器负责将设置在CLASSPATH中的jar以及目录中的jar进行加载,System类加载器有时候也被叫做Application类加载器。
  4. Common 类加载器
    这个目录下的类虽然对TOMCAT和所有的WEB APP都可见。但是Web App的类不应该放在这个目录下,所有未打包的Class都在$CATALINA_HOME/common/classes下,所有打包的jar都在$ CATALINA_HOME/commons/endorsed和$CATALINA_HOME/common/lib下,默认情况会包含以下几个包:
    ①jndi.jar JNDI API
    接口,这个包仅在Java1.2时候装入,1.3以后的版本JDK已自动装入。
    ②naming-common.jar JNDI接口实现类,Tomcat用这些类在内存中使用Context
    ③naming-resources.jar JNDI实现,Tomcat用它们定位Web App的静态资源。
    ④servlet.jar Servlet,Jsp API。
    ⑤xerces.jar XML
    解析器,特定的Web App可以在自己的/WEB-INF/lib 中覆盖。
  5. Catalina 类加载器
    装入Tomcat实现所有接口的类,这些类对Web App是完全不可见的,所有未打包的类在$CATALINA_HOME/server/classes,所有jar包在$ CATALINA_HOME/server/lib下。一般情况该ClassLoader将Load下面几个包:
    ①catalina.jar Servlet
    容器的Tomcat实现包。
    ②jakarta-regexp-X.Y.jar 正则表达式,请求过滤时使用。
    ③servlets-xxxxx.jar Servlet支持包。
    ④tomcat-coyote.jar Tomcat
    Coyote连接实现包。
    ⑤tomcat-jk.jar Web Server绑定包,允许Tomcat绑定Apache等作为Web Server
    ⑥tomcat-jk2.jar 功能同上。
    ⑦tomcat-util.jar Tomcat
    工具类,可能被一些Connector用到。
    ⑧tomcat-warp.jar 用于Apache Server包。
  6. Shared 类加载器
    载入所有WEB APP都可见的类,对TOMCAT不可见。 所有未打包的类在$CATALINA_HOME/shared/classes,所有jar包在$CATALINA_HOME /lib下。默认情况包含下面几个包:
    ①jasper-compiler.jar Jsp
    编译器,编译JspServlet
    ②jasper-runtime.jar Jsp(已编译成Servlet)运行支持包。
    ③naming-factory.jar 支持Web App使用JNDI的封装包。
  7. WebApp 类加载器
    Web App ClassLoader,Web App被部署是在该ClassLoader被创建的时候。所有class都在WEB-INF/classes下,所有jar在WEB-INF/lib下。特别注意WEB APP自己的ClassLoader的实现与众不同:
    它先试图从WEB APP自己的目录里载入,如果失败则请求父ClassLoader的代理。这样可以让不同的WEB APP之间的类载入互不干扰.另,Tomcat Server使用的是Catalina ClassLoader,一般的Web App使用的是WebApp ClassLoader。


Tomcat类加载过程

  1. Bootstrap($JAVA_HOME/jre/lib/*.jar;$JAVA_HOME/jre/classes)
  2. Extention($JAVA_HOME/jre/lib/ext/*.jar)
  3. System($CLASSPATH/*.class和指定的jar)
  4. Common($CATALINA_HOME/common 下的classes,lib,endores三个子目录)
  5. Catalina ($CATALINA_HOME/server/下的classes和lib目录仅对Tomcat可见)
  6. Shared($CATALINA_HOME/shared/下的classes和lib目录以及$CATALINA_HOME/lib目录)
    仅对Web应用程序可见,对Tomcat不可见WebApp($WEBAPP/Web-INF/* 仅对该WEB应用可见 classes/
    .class lib/.jar)


加载类和资源的顺序

  1. /Web-INF/classes
  2. /Web-INF/lib/*.jar
  3. Bootstrap
  4. System
  5. $CATALINA_HOME/common/classes
  6. $CATALINA_HOME/common/endores/*.jar
  7. $CATALINA_HOME/common/lib/*.jar
  8. $CATALINA_HOME/shared/classes
  9. $CATALINA_HOME/shared/lib/*.jar


四、Tomcat架构

 

  1. Server
    server元素是JVM的入口点,整个配置文件只有一个,因为server不是容器(container),因此不能嵌套子组件。server在某一指定的端口监听shutdown命令。server可以包含一个或多个service实。
  2. Service
    service有共享同一个Container的一个或多个Connectors组成,一般Service就是一个Engine,但没有明确规范要求如此。因为Service不是一个Container,因此不能在里面嵌套子组件(比如Loggers/Valves)。
  3. Connector
    connector就是一个Tomcat与客户端的连接,Tomcat有两种典型的Connector:http,JK2.http connector监听来自Browser的连接(通常在我们熟悉的8080端口),JK2.来自其他WebServer的请求(默认在8009端口监听)。Connector会把获得的请求交给Engine处理。
  4. Engine
    Engine下可以配置多个虚拟主机Virtual Host,每个虚拟主机都有一个域名。当Engine获得一个请求时,它把该请求匹配到某个Host上,然后把该请求交给该Host来处理。Engine 有一个默认虚拟主机,当请求无法匹配到任何一个Host上的时候,将交给该默认Host来处理。
  5. Host
    host代表一个虚拟主机,默认是localhost,host下可以部署多个web application,在我们实际应用中一般要考虑问题的对象就是host。


一个<Server>包含一个或多个<Service>,一个<Service>包含唯一一个 < Engine>和一个或多个<Connector>,多个 <Connector>共享一个<Engine>;一个<Engine>包含多个<Host>,每个 <Host>定义一个虚拟主机,包含一个或多个web应用<Context>; <Context>元素是代表一个在虚拟主机上运行的Web应用。<Context>标签的描述(Apache官方文档):

Please note that for tomcat 5.x, unlike tomcat 4.x, it is NOT recommended to place <Context> elements directly in the server.xml file. Instead, put them in the META-INF/context.xml directory of your WAR file or the conf directory as described above.


五、WEB应用程序的目录结构


在WEB上发布的J2EE应用程序都有自己特定的目录结构。假设创建一名为HELLOAPP的WEB项目。

  1. HELLOAPP-WEB应用根目录,所有JSP\HTML等文件均存放于此。
  2. HELLOAPP/WEB-INF-存放WEb应用的发布描述文件web.xml。
  3. HELLOAPP/WEB-INF/classes-存放各种class文件,servlet类文件也存放于此。
  4. HELLOAPP/WEB-INF/lib-存放WEb应用所需的各种JAR文件。


六、Tomcat的安全域


安全域是Tomcat服务器用来保护Web应用的资源的一种机制。在安全域中可以配置安全验证信息,即用户信息(包括用户名和口令)以及用户和角色的映射关系。每个用户可以拥有一个或多个角色,每个角色拥有不同的可以访问的Web资源。一个用户可以访问其拥有的所有角色对应的Web资源。


引入角色的原因:角色一方面代表一系列用户,另外一方面可以代表一系列权限,因此可以说是用户和权限的结合体。引入角色的概念主要是为了分离用户和访问权限的直接联系。用户与访问权限的直接组合可能是短暂的,而角色则可以相对稳定,这样用户的变化只要涉及到角色就可以,无需考虑权限。而权限的变化只涉及到角色,无需考虑用户或用户组。


安全域是Tomcat的内置功能,在org.apache.catalina.Realm接口中声明了把一组用户名、口令及所关联的角色集成到Tomcat中的方法。Tomcat 5提供了4个实现这一接口的类,它们分别代表了五种安全域类型:

安全域类型

类名

描述

内存域

MemoryRealm

在初始化阶段,从XML文件中读取安全认证信息,并把它们以一组对象的形式存放在内存中

JDBC域

JDBCRealm

通过JDBC驱动程序访问存放在数据库中的安全验证信息

数据源域

DataSourceRealm

通过JNDI数据源访问存放在数据库中的安全验证信息

JNDI域

JNDIRealm

通过JNDI provider访问存放在基于LDAP的目录服务器中的安全验证信息

JAAS域

JAASRealm

通过JAAS的安全授权API,实现自己的安全认证机制


总括


配置安全域主要有一下两个步骤

  1. 为WEB资源设置安全约束
    • 在web.xml中加入<sercurity-constraint>元素,对要过滤的文件类型限制
    • 在WEB中加入<login-config>,Tomcat中支持三种验证方法,1基本验证 2摘要验证 3基于表单验证
    • 在web.xml中加入<security-role>元素指明手所有角色的名字
  1. 在CONF/SERVER.XML中配置REALM,这个元素中指定安全域的类名以及相关属性。
  2. 示例
    • 在conf/server.xml中配置
      在你的应用的<Context......>下面配置<Realm className="org.apache.catalina.realm.MemoryRealm" />,那么就会从一个XML文件中读取用户信息,默认的就是tomcat-users.xml
    • tomcat-users.xml中的角色定义
      <?xml version='1.0' encoding='utf-8'?>
      <tomcat-users>
      <role rolename="tomcat"/>
      <role rolename="role1"/>
      <role rolename="guest"/>
      <user username="lee" password="lee" roles="guest"/>
      <!-对应的用户密码属于的角色->
      <user username="suoxin" password="suoxin" roles="tomcat,role1"/>
      </tomcat-users>
    • 在你的应用下的web.xml中加入<security-constraint>元素
      <!-- -->
      <security-constraint>
      <display-name>HelloApp Configuration Security Constraint</display-name>
      <web-resource-collection>
      <!--声明受保护的资源 -->
      <web-resource-name>Protected Area</web-resource-name>
      <!-- 指明该目录吓得所有文件受保护 或者<url-pattern>*.jsp</url-pattern> -->
      <url-pattern>/* </url-pattern>
      </web-resource-collection>
      <auth-constraint>
      <!-- 允许属于guest和admin角色的用户登陆 -->
      <role-name>admin</role-name>
      <role-name>guest</role-name>
      </auth-constraint>
      </security-constraint>
    • 在你的应用下的web.xml中加入<login-config>元素中按照如下配置:
      <login-config>
      <!-- 这里FORM是基于表单的验证,会跳转到你的login.jsp,如果出错就到myerror.jsp,还有基于对话筐的是BASIC关键字,
      但是不安全在网络传输中。摘要验证DIGEST会采用MD5(Message Digest Algorithm)加密传输-->
      <auth-method>FORM</auth-method>
      <!-- 设定安全域的名称 -->
      <realm-name>HelloApp realm</realm-name>
      <form-login-config>
      <!-- 配置验证网页和出错网页 ->
      <form-login-page>/mylogin.jsp</form-login-page>
      <form-error-page>/myerror.jsp</form-error-page>
      </form-login-config>
      </login-config>
    • mylogin.jsp的action和name必须严格规范写
      <form name="form1" id="form1" method="post" action="j_security_check">
      <input type="text" name="j_username"/>
      <input type="text" name="j_password"/>
      <input type="submit" name="Submit" value="提交" />
      </form>


验证方式

  1. 基本验证
    如果采用基本验证,当客户访问受保护的资源时,浏览器会先弹出一个对话框,要求用户输入用户名和密码,如果输入正确,Web服务器就允许他访问这些资源;否则,在连接3次尝试失败后,会显示一个错误信息页面。这个方法的缺点是把用户名和密码从客户端传送到Web服务器时,在网络上传送的数据采用 Base64编码(全是可读文本),因此这种验证方法不是非常安全。可以采用一些安全措施来克服这个弱点。例如在传输层上应用SSL(安全套接层(Secure Sockets Layer)为验证过程提供了数据加密,服务器端认证,信息真实性等方面的安全保证。在此验证方式中,客户端必须提供一个公钥证书,你可以把这个公钥证书看作是你的数字护照。公钥证书也称数字证书,它是被称作证书授权机构(CA)——一个被信任的组织颁发的。这个数字证书必须符合X509公钥体系结构(PKI)的标准。如果你指定了这种验证方式,Web服务器将使用客户端提供的数字证书来验证用户的身份。)或者在网络层上使用IPSEC或VPN技术。
  2. 摘要验证
    摘要验证与基本验证的不同在于:摘要验证不会在网络中直接传输用户密码,而是首先采用MD5(Message Digest Algorithm)对用户密码进行加密,然后传输加密后的数据,所有这种方法显得更为安全。
  3. 基于表单的验证
    基于表单的验证使系统开发者可以自定义用户的登陆页面和报错页面。用户在表单中填写用户名和密码,而后密码以明文形式在网路中传递,如果在网路的某一节点将此验证请求截获,在经过反编码很容易就可以获取用户的密码。因此在使用基本HTTP的验证方式和基于表单的验证方法时,一定确定这两种方式的弱点对你的应用是可接受的。但有个规定:用户名对应的文本框必须命名为:j_username,密码对应的文本框必须命名为:j_password,并且表单的 aciton的值必须为:j_security_check。


内存域(MemoryReal)


内存域是由org.apache.catalina.realm.MemoryRealm类来实现的。MermoryRealm从一个XML文件中读取用户信息。默认情况下,该XML文件为tomcat安装目录的conf/tomcat_users.xml。

在这个文件中定义了每个用户拥有的角色。

要采用这个类型的安全域进行web资源保护的设置步骤为:

  1. 按上面的步骤在你的应用程序的web.xml中配置安全约束,可以采用三种验证(Basic、Digest、基于表单(Form))中的任一种。
  2. 在tomcat_user.xml文件中定义用户、角色以及两者的映射关系。
  3. 在server.xml中加入相应的元素。


JDBC域


JDBCRealm通过JDBC驱动程序访问存放在关系型数据库中的安全认证信息,JDBC域使得安全配置非常灵活。当修改了数据库中的安全认证信息后,不必重启tomcat服务器(两者是相互独立的)。

当用户第一次访问受保护的资源时,Tomcat将调用Reaml的authenticate()方法,该方法从数据库中读取最新的安全认证信息。该用户通过认证之后,在用户访问Web资源期间,用户的各种验证信息被保存在缓存中。

JDBC域设置步骤为:

  1. 按上面的步骤在你的应用程序的web.xml中配置安全约束,可以采用三种验证(Basic、Digest、基于表单(Form))中的任一种。
  2. 创建数据库和创建两张表:users(定义用户信息,包括用户名和口令)和users_roles(定义用户和角色的映射关系)。
  3. 将所用的数据库驱动程序拷贝到Tomcat安装目录下/common/lib中。
  4. 配置元素,在server.xml中的中加入如下的元素:如果中已经有元素了,应该将其注释掉。
    driverName="com.mysql.jdbc.Driver" debug="99"//数据库驱程,debug设定跟踪级别
    connectionURL="jdbc:mysql://localhost/database" //数据库的URL
    connectionName="admin" connectionPassword="8888" //数据库连接的用户名和口令
    userTable="users" userNameCol="user_name" userCredCol="user_pass"//指定用户表
    userRoleTable="user_roles" roleNameCol="role_name" />//指定用户和角色映射关系表


DataSource域


DataSource域和JDBCRealm域的两者的不同是访问数据库的方式不一样:DataSource通过JNDI来访问数据库。而JDBCRealm通过JDBC驱动程序来访问数据库。


区别:通过JDBC API连结数据库是一种最原始、最直接的方法。而DataSource封装了通过JDBC API来连结数据库的细节,它采用数据库连结池机制,把可用的数据库连结保存在缓存中,避免每次访问数据库都建立数据库连结,这样可以提高访问数据库的效率。


适用场合: 在任何Java应用中,都可以直接通过JDBC API连结数据库,如果需要的话,可以手工编程实现数据库连结池。当Java应用运行在JavaWeb容器或EJB容器中时,可以优先考虑使用由容器提供的DataSource。以Tomcat容器为例,DataSource实例被作为JNDI资源发布到Tomcat容器中,Tomcat容器负责维护 DataSource实例的生命周期,Java Web应用通过JNDI来获得DataSource实例的引用。


JNDI(The Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API。命名服务将名称和对象联系起来,使得我们可以用名称访问对象。目录服务是一种命名服务,在这种服务里,对象不但有名称,还有属性。


DataSource域配置步骤:

  1. 按上面的步骤在你的应用程序的web.xml中配置安全约束,可以采用三种验证(Basic、Digest、基于表单(Form))中的任一种。
  2. 创建数据库和创建两张表:users(定义用户信息,包括用户名和口令)和users_roles(定义用户和角色的映射关系)。
  3. 将所用的数据库驱动程序拷贝到Tomcat安装目录下/common/lib中。
  4. 数据源的配置


//TODO


JNDIRealm


JNDI Directory Realm将Catalina连接到一个LDAP目录,通过正确的JNDI驱动访问。LDAP目录存储了用户名,密码以及他们相应的角色。LDAP(轻量级目录访问协议)的英文全称是Lightweight Directory Access Protocol,LDAP是用来访问存储在信息目录(也就是LDAP目录)中的信息的协议。更为确切和正式的说法应该是 "通过使用LDAP,可以在信息目录的正确位置读取(或存储)数据"。LDAP最大的优势是:可以在任何计算机平台上,用很容易获得的而且数目不断增加的 LDAP的客户端程序访问LDAP目录。而且也很容易定制应用程序为它加上LDAP的支持。


//TODO


JAASRealm


Java Authentication Authorization Service(JAAS,Java验证和授权API)提供了灵活和可伸缩的机制来保证客户端或服务器端的Java程序。JAAS是一个比较新的的 Java API。在J2SE 1.3中,它是一个扩展包;在J2SE 1.4中变成了一个核心包。通过实现以下两个接口:javax.security.auth.spi.LoginModule 和javax.security.Principal,你可以实现自己的安全机制。

配置的步骤:

  1. 实现自己的LoginMode、User和Role的类。
  2. 尽管不是JAAS要求,但你应该通过javax.security.Principal这个接口实现一个单独的类来区别users和roles,这样tomcat就能区分哪个Principals是users和roles返回。
  3. 设置login.config文件告诉tomcat去哪里找指定的JVM。
  4. 配置web.xml文件,和前面的配置一样。
  5. 在server.xml文件中加入<Realm>元素。


//TODO


七、Tomcat与HTTP服务器集成


Tomcat最主要的功能是提供Servlet/JSP容器,尽管它也可以作为独立的Java Web服务器,它在对静态资源(如HTML文件或图像文件)的处理速度,以及提供的Web服务器管理功能方面都不如其他专业的HTTP服务器,如IIS和 Apache服务器。因此在实际应用中,常常把Tomcat与其他HTTP服务器集成。对于不支持Servlet/JSP的HTTP服务器,可以通过Tomcat服务器来运行 Servlet/JSP组件。当Tomcat与其他HTTP服务器集成时,Tomcat服务器的工作模式通常为进程外的Servlet容器,Tomcat服务器与其他HTTP服务器之间通过专门的插件来通信。


Tomcat与HTTP服务器集成的原理


Tomcat服务器通过Connector连接器组件与客户程序建立连接,Connector组件负责接收客户的请求,以及把Tomcat服务器的响应结果发送给客户。默认情况下,Tomcat在server.xml中配置了两种连接器:

<!-- Define a non-SSL Coyote HTTP/1.1

Connector on port 8080 -->

<Connector port="8080"

maxThreads="150"

minSpareThreads="25"

maxSpareThreads="75"

enableLookups="false"

redirectPort="8443"

acceptCount="100"

debug="0"

connectionTimeout="20000"

disableUploadTimeout="true" />

 

<!-- Define a Coyote/JK2 AJP 1.3

Connector on port 8009 -->

<Connector port="8009"

enableLookups="false"

redirectPort="8443" debug="0"

protocol="AJP/1.3" />

 

第一个连接器监听8080端口,负责建立HTTP连接。在通过浏览器访问Tomcat服务器的Web应用时,使用的就是这个连接器。

第二个连接器监听8009端口,负责和其他的HTTP服务器建立连接。在把Tomcat与其他HTTP服务器集成时,就需要用到这个连接器。

Web客户访问Tomcat服务器上JSP组件的两种方式如图所示。

在图中,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

。下面,介绍Tomcat与HTTP服务器之间是如何通信的。

  1. JK插件
    Tomcat提供了专门的JK插件来负责Tomcat和HTTP服务器的通信。应该把JK插件安置在对方的HTTP服务器上。当HTTP服务器接收到客户请求时,它会通过JK插件来过滤URL,JK插件根据预先配置好的 URL映射信息,决定是否要把客户请求转发给Tomcat服务器处理。
    假定在预先配置好的URL映射信息中,所有"/*.jsp"形式的URL都由Tomcat服务器来处理,那么在图的例子中,JK插件将把客户请求转发给Tomcat服务器,Tomcat服务器于是运行index.jsp,然后把响应结果传给HTTP服务器,HTTP服务器再把响应结果传给Web客户2。
    对于不同的HTTP服务器,Tomcat提供了不同的JK插件的实现模块。
  2. AJP协议
    AJP是为Tomcat与HTTP服务器之间通信而定制的协议,能提供较高的通信速度和效率。在配置Tomcat与HTTP服务器集成中,读者可以不必关心AJP协议的细节。


在Linux下Tomcat与Apache服务器集成


Apache HTTP服务器是Apache软件组织提供的开放源代码软件,它是一个非常优秀的专业的Web服务器,为网络管理员提供了丰富多彩的Web管理功能,包括目录索引、目录别名、内容协商、可配置的HTTP错误报告、CGI程序的SetUID执行、子进程资源管理、服务器端图像映射、重写URL、URL拼写检查以及联机手册等。

Apache HTTP服务器本身没有提供Servlet/JSP容器。因此,在实际应用中,把Tomcat与Apache集成,可以建立具有实用价值的商业化的Web平台。集成的步骤如下:

  1. 安装Apache HTTP服务器
  2. 在Apache中加入JK插件
  3. 创建workers.properties文件
    表 workers.properties文件的属性

属性

描述

workers.tomcat_home

指定Tomcat服务的根目录

workers.java_home

指定JDK的根目录

workers.list

指定Tomcat服务器工作名单

workers.worker1.port

指定Tomcat服务器使用的JK端口

workers.worker1.host

指定Tomcat服务器的ip地址

workers.worker1.type

指定Tomcat服务器与Apache之间的通讯协议

workers.worker1.lbfactor

指定负载均衡因数,只有在使用了负载均衡器的情况下,这个属性才有意义

  1. 修改Apache的配置文件httpd.conf
    表 JK的插件的相关属性
<td sty
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics

属性