1. 程式人生 > >研究Tomcat的結構,徹底解決數據源連接數據庫

研究Tomcat的結構,徹底解決數據源連接數據庫

blog conf -s iar 系列 resource web程序 protoc nec

Tomcatserver是由一系列的可配置俄組件構成的,當中核心的是Catalina Servlet容器,以下是組件關系

<Server><!--頂層元素,Tomcat實例的頂層元素,可包括一個或多個Service-->

<Service><!--連接器元素,包括一個Engine元素,以及一個或多個Connector元素,這些Connector共享同一個Engine-->

<Connector><!--實際和客戶交互的組件-->

<Engine><!--

容器類元素。能夠包括多個Host元素-->

<Host><!--定義一個虛擬主機,它能夠包括一個或多個Web應用-->

<Context><!--使用最頻繁的元素,每一個Context代表執行在虛擬主機上的應用-->

......................</Context>

server以下有個service節點,service節點能夠用Connector配置一個監聽port。service裏有僅僅能有一個Engine節點。它接受同級文件夾Connectorport的請求,能夠通過defaultHost屬性默認指向一個Host,Host就是一個該Connectorport下的域名。以下能夠用Context配置多個虛擬文件夾。


即:server以下能夠有多個service,用於配置不同監聽port
service以下能夠有多個Host,用於配置該port下的不同域名
Host裏能夠包括多個Context,用於配置該port該域名下的不同虛擬文件夾

Host下的Alias是一個域名別稱。能夠配置多個域名
Host裏假設沒有Context節點。假設不是要訪問webapps文件夾下。不加虛擬文件夾訪問。會拋404找不到文件的錯誤

Host以下的context節點配置為:<Context path=“” 後。則這個文件夾為默認的訪問文件夾


須要配置能夠/為列文件夾,在conf/web.xml裏
<init-param>
<param-name>listings</param-name>
<param-value>true</param-value>
</init-param>

把這個的param-value改為true即為能夠列文件夾了。
當然,假設不配置server.xml文件。直接把站點放到webapps,默認會自己主動載入該站點,因此大多數情況,我們都不用對server.xml文件做不論什麽改動。


<Service name="<span style="color:#ff0000;">Catalina</span>">
    <Connector port="<span style="color:#ff0000;">8080</span>" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />    
    <Connector port="<span style="color:#ff0000;">8009</span>" protocol="AJP/1.3" redirectPort="8443" />
    <Engine name="Catalina" defaultHost="<span style="color:#ff0000;">localhost</span>">
      <Realm className="org.apache.catalina.realm.LockOutRealm">
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>
      <Host name="<span style="color:#ff0000;">localhost</span>"  appBase="<span style="color:#ff0000;">webapps</span>"
            unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log." suffix=".txt"
               pattern="%h %l %u %t "%r" %s %b" />
      </Host>
    </Engine>
  </Service>

  <Service name="<span style="color:#ff0000;">Catalina1</span>">
    <Connector port="<span style="color:#ff0000;">8090</span>" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <Connector port="<span style="color:#ff0000;">8010</span>" protocol="AJP/1.3" redirectPort="8443" />
    <Engine name="Catalina1" defaultHost="<span style="color:#ff0000;">192.168.0.193</span>">
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>

      <Host name="<span style="color:#ff0000;">192.168.0.193</span>"  appBase="<span style="color:#ff0000;">webapps1</span>"
            unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log." suffix=".txt"
               pattern="%h %l %u %t "%r" %s %b" />
      </Host>
    </Engine>
  </Service>  


同一時候拷貝webapps。裏面放置另外一個web程序。然後

http://localhost:8080/appName/

http://localhost:8090/appName1/
都能夠成功,OK!

研究Tomcat的結構,徹底解決數據源連接數據庫