tomcat server容器解读

来源:互联网 发布:手机旋律合成软件 编辑:程序博客网 时间:2024/06/06 10:18

1. server的实例类为:org.apache.catalina.core.StandardServer为顶层容器。

2.二级容器GlobalNamingResources,设置认证用户信息。

  <GlobalNamingResources>

    <!-- Editable user database that can also be used by

         UserDatabaseRealm to authenticate users

    -->

    <Resource name="UserDatabase" auth="Container"

              type="org.apache.catalina.UserDatabase"

              description="User database that can be updated and saved"

              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"

              pathname="conf/tomcat-users.xml" />

  </GlobalNamingResources>

3. 二级容器service,包括了多个connector和一个engine

  <!-- A "Service" is a collection of one or more "Connectors" that share

       a single "Container" Note:  A "Service" is not itself a "Container",

       so you may not define subcomponents such as "Valves" at this level.

       Documentation at /docs/config/service.html

   -->

  <Service name="Catalina">
    <Connector port="8080"protocol="HTTP/1.1"
              connectionTimeout="20000"
              redirectPort="8443" />
    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector port="8009"protocol="AJP/1.3" redirectPort="8443" />
    <Engine name="Catalina"defaultHost="localhost" jvmRoute="jvm1">
    -->
    <Engine name="Catalina"defaultHost="localhost">

3. 三级容器Engine包括Realm和Host。

    <Engine name="Catalina" defaultHost="localhost">

 

      <!--For clustering, please take a look at documentationat:

         /docs/cluster-howto.html  (simplehow to)

         /docs/config/cluster.html (reference documentation) -->

      <!--

     <ClusterclassName="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

     -->

 

      <!-- Use theLockOutRealm to prevent attempts to guess user passwords

          via a brute-force attack -->

      <Realm className="org.apache.catalina.realm.LockOutRealm">

        <!-- This Realm uses the UserDatabase configured in theglobal JNDI

             resources under the key"UserDatabase".  Any edits

            that are performed against this UserDatabase are immediately

            available for use by the Realm. -->

        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"

              resourceName="UserDatabase"/>

      </Realm>

 

      <Host name="localhost"  appBase="webapps"

           unpackWARs="true" autoDeploy="true">

 

        <!-- SingleSignOn valve, share authentication betweenweb applications

            Documentation at: /docs/config/valve.html -->

        <!--

       <ValveclassName="org.apache.catalina.authenticator.SingleSignOn" />

       -->

 

        <!-- Access log processes all example.

            Documentation at: /docs/config/valve.html

            Note: The pattern used is equivalent to using pattern="common"-->

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"

              prefix="localhost_access_log." suffix=".txt"

              pattern="%h %l %u %t&quot;%r&quot; %s %b" />

 

      </Host>

    </Engine>

实现类关系

Event-Listerner事件监听模式

事件监听同步模式分两个部分:Event Source和Event Listener:
Event Source:被监听者的事件集合,可能是方法,提供事件的注册加入和移除功能。类似被观察者的集合。
Event Listener:事件的监听者,当事件被触发,所有监听这个事件的监听者将被通知,然后执行自己的Action响应动作。

事件监听异步模式在Source和Listener之间引入event queue,
event queue是一个基于事件的publish-subscribe. 它一种松耦合方式提供不同模块和角色之间异步通讯。它比同步更加松耦合,这样,我们就把Source-Listener改成了publish-queue-subscribe方式。

 

0 0
原创粉丝点击