pasha

           

          Tomcat server.xml 中文說明文檔

          <Server port="8005" shutdown="SHUTDOWN" debug="0">
          <!-- 這些指令組件關閉JMX MBeans支持 -->
          <!-- 你也可以通過包含你自己的mbean描述文件配置自定義的組件,然后設置
                “descriptors”屬性為以“;”為分隔的文件名列表嚴將它添加到默認列表
                中,例如:descriptors="/com/myfirm/mypackage/mbean-descriptor.xml"。
          -->
          <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" debug="0" />
          <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" debug="0" />
          <!-- Global JNDI resources -->
          <!-- 全局JNDI資源 -->
          <GlobalNamingResources>
                <!-- 出于示例目的的測試入口 -->
                <Environment name="simpleValue" type="java.lang.Integer" value="30" />
                <!-- 可編輯的,用來通過UserDatabaseRealm認證用戶的用戶數據庫 -->
                <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase"
                 description="User database that can be updated and saved">
                </Resource>
                <ResourceParams name="UserDatabase">
                 <parameter>
                  <name>factory</name>
                  <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
                 </parameter>
                 <parameter>
                  <name>pathname</name>
                  <value>conf/tomcat-users.xml</value>
                 </parameter>
                </ResourceParams>
          </GlobalNamingResources>
          <!-- 一個“Service”是一個或多個共用一個單獨“Container”(容器)的“Connectors”
                組合(因此,應用程序在容器中可見)。通常,這個容器是一個“Engine”
                (引擎),但這不是必須的。
                注意:一個“Service”自身不是一個容器,因此,在這個級別上你不可定義
                諸如“Valves”或“Loggers”子組件。
          -->
          <!-- 定義Tomcat的標準獨立服務 -->
          <Service name="Catalina">
                <!-- 一個“Connector”(連接器)代表一個請求被接收和應答所需要的端點。每個連
                 接器通過相關的“Container”(容器)處理請求。
                 默認情況下,一個非SSL的HTTP/1.1的連接器被綁定在端口8080。你也可以通過
                 根據后面的使用說明并取消第二個連接器入口的注釋,在端口8443上建立一個
                 SSL HTTP/1.1的連接器。開放SSL支持需要下面幾步(參見Tomcat 5文檔中怎樣
                 配置SSL的說明以取得更多的詳細信息):
                 * 如果你的JDK是1.3或1.3以前的版本,下載安裝JSSE 1.0.2或以后版本,并放
                 置JAR文件到“$JAVA_HOME/jre/lib/ext”目錄下。
                 * 帶一個“changeit”的口令值執行:
                 %JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA (Windows)
                 $JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA (UNIX)
                 來生成它自己的證書私鑰。
                 默認情況下,當一個web應用程序調用請求時,DNS查詢是可行的。這將對性能造
                 成一些不利的影響,因此,你可以將“enableLookups”設置為“false”來關閉DNS
                 查詢。當DNS查詢被關閉時,request.getRemoteHost()將返回包含遠程客戶IP地
                 址的字符串。
                -->
                <!-- 在8080端口上定義一個非SSL的HTTP/1.1連接器 -->
                <Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                 enableLookups="false" redirectPort="8443" acceptCount="100"
                 debug="0" connectionTimeout="20000" disableUploadTimeout="true" />
                <!-- 注意,要關閉連接超時,將connectionTimeout設置為0 -->
                <!-- 注意:要使用gzip壓縮需要設置如下屬性:
                 compression="on"
                 compressionMinSize="2048"
                 noCompressionUserAgents="gozilla,traviata"
                 compressableMimeType="text/html,text/xml"
                -->
                <!-- 在端口8443上定義一個SSL的HTTP/1.1的連接器 -->
                <!--
                 <Connector port="8443"
                 maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                 enableLookups="false" disableUploadTimeout="true"
                 acceptCount="100" debug="0" scheme="https" secure="true"
                 clientAuth="false" sslProtocol="TLS" />
                -->
                <!-- 在端口8009上定義一個Coyote/JK2 AJP 1.3連接器 -->
                <Connector port="8009" enableLookups="false" redirectPort="8443"
                 debug="0" protocol="AJP/1.3" />
                <!-- 在8082端口上定義一個代理HTTP/1.1連接器 -->
                <!-- 參見代理文檔以取得這里使用屬性的更多的信息。 -->
                <!--
                 <Connector port="8082"
                 maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                 enableLookups="false"
                 acceptCount="100" debug="0" connectionTimeout="20000"
                 proxyPort="80" disableUploadTimeout="true" />
                -->
                <!-- 一個“Engine”(引擎)代表處理每個請求的入口點(在Catalina內)。這個Tomcat
                 的標準獨立引擎實現分析包含在請求中的HTTP頭信息,并將請求傳送到適當的主機
                 或虛擬主機上。-->
                <!-- 你應該這樣設置jvmRoute以便在JK/JK2通道上支持負載平衡:
                 <Engine name="Standalone" defaultHost="localhost" debug="0" jvmRoute="jvm1">
                -->
                <!-- 在我們的容器體系中定義最高級別的容器 -->
                <Engine name="Catalina" defaultHost="localhost" debug="0">
                 <!-- 請求轉儲器值轉儲非常有用的通過Tomcat這個實例接收到的所有請求的,關于
                  接收到的請求頭和cookies,以及發送出的回應頭和cookies的調試信息。如果
                  你只在意一個特定的虛擬主機或者一個特定應用程序的請求,在對應的<Host>
                  或<Context>入口中套用這個元素。
                  對于所有的Servlet(小服務程序)2.4來所,在示例程序中檢驗
                  “RequestDumperFilter”過濾是非常容易的(這個過濾器源代碼可以在
                  “$CATALINA_HOME/webapps/examples/WEB-INF/classes/filters”下找到。
                  請求轉儲默認情況下是關閉的,如果要使用它,取消下面行的注釋符。-->
                 <!--
                  <Valve className="org.apache.catalina.valves.RequestDumperValve"/>
                 -->
                 <!-- 全局日志設置,除非在更低的級別上覆蓋它的設置 -->
                 <Logger className="org.apache.catalina.logger.FileLogger"
                  prefix="catalina_log." suffix=".txt" timestamp="true" />
                 <!-- 因為這個Realm(區域)在這兒,因此這個實例將被全局共享。 -->
                 <!-- 這個Realm(區域)使用在全局JNDI資源下,由“UserDatabase”配置的用戶
                  數據庫。通過使用Realm將使對于這個用戶數據庫的任何編輯都將會立即可用
                  <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
                  debug="0" resourceName="UserDatabase"/>-->
                 <!-- 注釋掉舊有的Realm以便我們能很快速的恢復舊有配置。 -->
                 <!--
                  <Realm className="org.apache.catalina.realm.MemoryRealm" />
                 -->
                 <!-- 下面的屬性用于從儲存在數據庫或從JDBC通道中得到的Realm以取代上面的
                  Realm配置。-->
                 <!--
                  <Realm className="org.apache.catalina.realm.JDBCRealm" debug="99"
                  driverName="oracle.jdbc.driver.OracleDriver"
                  connectionURL="jdbc:oracle:thin:@ntserver:1521:ORCL"
                  connectionName="scott" connectionPassword="tiger"
                  userTable="users" userNameCol="user_name" userCredCol="user_pass"
                  userRoleTable="user_roles" roleNameCol="role_name" />
                 -->
                 <!--
                  <Realm className="org.apache.catalina.realm.JDBCRealm" debug="99"
                  driverName="sun.jdbc.odbc.JdbcOdbcDriver"
                  connectionURL="jdbc:odbc:CATALINA"
                  userTable="users" userNameCol="user_name" userCredCol="user_pass"
                  userRoleTable="user_roles" roleNameCol="role_name" />
                 -->
                 <!-- 定義默認的虛擬主機
                  注意:XML模式確認將不能與Xerces 2.2同工作。
                 -->
                 <Host name="localhost" debug="0" appBase="webapps" unpackWARs="true"
                  autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
                  <!--
                   為這個結點定義一個群集,通過定義這個元素,意味著每個管理員都將被改變。
                   因此,當運行一個群集時,只有確認在必須被聚集和移除其他的地方有你的
                   web軟件。
                   一個群集有下面這些參數:
                   className = 這個群集類的全限定名
                   name = 你的群集的描述名,可以是任何描述
                   debug = 調試級別,更高意味著更多的輸出
                   mcastAddr = 多播地址,所有的節點都必須有同樣的多播地址
                   mcastPort = 多播端口,對所有的節點都必須有同樣的多播端口
                   mcastBindAddr = 綁定多播套接字到一個指定的地址
                   mcastTTL = 多播生存期,如果你想要限制你的廣播的話
                   mcastSoTimeout = 多播讀取超時
                   mcastFrequency = 發送“I'm alive”(我還活著)信息的間隔毫秒數
                   mcastDropTime = 多長時間沒有收到“I'm alive”就將這個節點標識為死節點(單位:毫秒)
                   tcpThreadCount = 用于處理重復引入請求的線程數,最好是每個節點都有相同的線程數
                   tcpListenAddress = 在有多塊以太網卡的主機上的監聽TCP群集請求的地址(綁定地址),auto意味著地址由InetAddress.getLocalHost().getHostAddress()取得。
                   tcpListenPort = tcp監聽端口
                   tcpSelectorTimeout = 在操作系統中有java.nio喚醒錯的情況下,使用Selector.select()的超時
                   毫秒數。設為0則沒有超時限制
                   printToScreen = true意味著管理員的相關信息也將打印輸出到std.out
                   expireSessionsOnShutdown = true 意味著
                   useDirtyFlag = true意味著我們只能在調用setAttribute,removeAttribute后才能復制一個會話;
                   false意味著在每個請求后復制會話。
                   false意味著復制將以下列代碼方式工作:
                   <%
                   HashMap map = (HashMap)session.getAttribute("map");
                   map.put("key","value");
                   %>
                   replicationMode = 可以是“pooled”、“synchronous”或者“asynchronous”
                   * Pooled意味著在多個套接字上同步進行復制。例如,先復制數據,然后請求返回。
                   這與“synchronous”相同,除了它使用一個套接字池,因此,它是多線程的。它是
                   最快和最高級的設置,使用這個配置也增加了處理復制的tcp線程的域。
                   * Synchronous指執行請求的線程,它也是向其他節點復制數據的線程,并且直到
                   所有的節點都己經收到信息后才返回。
                   * Asynchronous,對每個群集節點而言,這是一個特別的“sender”(發送者)線程,
                   因此請求線程將復制請求排隊到一個小隊列中,然后,返回給用戶。
                   這個小隊列是一個當會話被添加到隊列中,而從先前的請求中,同一個會話己經存在
                   ,這個會話將被放置在隊列中以代替重復的兩個請求。這幾乎從不會發生,除非存在
                   較大的網絡延遲。
                  -->
                  <!-- 當配置群集時,你也添加一個值來捕獲所有傳入的請求,在請求結束時,這個會話可能被子復制,
                   也可能不被復制。一個會話是否復制取決于下列條件是否發生:
                   1. useDirtyFlag為真,或者setAttribute或者removeAttribute己經被調用。
                   2. 會話己經存在(己經被創建了)。
                   3. 請求沒有被“filter”屬性所捕獲。
                   這個filter(過濾器)屬性用于過濾那些不能修改會話的請求,因此,我們在這個請求結束后不復制
                   會主。這個過濾器是消極的,例如,你向過濾器發送了一些東西,然后被過濾出去,在那個匹配的過
                   濾器上不會發生復制。
                   過濾器屬性以分號為分隔,因此你不能換行,即使你想這么做。
                   filter=".*\.gif;.*\.js;"意味著在進行以.gif和.js結束的URI請求后不復制會話。
                  -->
                   <!--
                   <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
                   managerClassName="org.apache.catalina.cluster.session.DeltaManager"
                   expireSessionsOnShutdown="false"
                   useDirtyFlag="true">
                   <Membership
                   className="org.apache.catalina.cluster.mcast.McastService"
                   mcastAddr="228.0.0.4"
                   mcastPort="45564"
                   mcastFrequency="500"
                   mcastDropTime="3000"/>
                   <Receiver
                   className="org.apache.catalina.cluster.tcp.ReplicationListener"
                   tcpListenAddress="auto"
                   tcpListenPort="4001"
                   tcpSelectorTimeout="100"
                   tcpThreadCount="6"/>
                   <Sender
                   className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
                   replicationMode="pooled"/>
                   <Valve className="org.apache.catalina.cluster.tcp.ReplicationValve"
                   filter=".*\.gif;.*\.js;.*\.jpg;.*\.htm;.*\.html;.*\.txt;"/>
                   </Cluster>
                  -->
                  <!-- 通常,對每一個應用程序,用戶必須逐個的認證他們自己。當他們遇到被
                   某種安全約束所保護的資源時,如果你想讓用戶只在第一次被認證,那么,
                   取消下面入口行的注釋,然后在這個虛擬主機中包含這個用戶的,橫跨所有
                   web應用程序的用戶身份識別。-->
                  <!--
                   <Valve className="org.apache.catalina.authenticator.SingleSignOn"
                   debug="0"/>
                  -->
                  <!-- 這個虛擬主機的所有請求的訪問日志過程。默認情況下,日志文件被創建在相對
                   于$CATALINA_HOME目錄下的logs目錄下。通過directory屬性,你也可以指定一個
                   不同的目錄,如果你想的話。可以使用相對路徑(相對于$CATALINA_HOME),也
                   可以使用絕對路徑。-->
                  <!--
                   <Valve className="org.apache.catalina.valves.AccessLogValve"
                   directory="logs" prefix="localhost_access_log." suffix=".txt"
                   pattern="common" resolveHosts="false"/>
                  -->
                  <!-- 與這個虛擬主機有關系所有上下文所共享的日志。默認情況下(使用FileLogger時),
                   日志文件被創建在相對于$CATALINA_HOME目錄下的logs目錄下。如果你希望,你也可
                   以給directory指定一個不同的路徑。可以使用相對于$CATALINA_HOME的相對路徑,也
                   可以使用絕對路徑。-->
                  <Logger className="org.apache.catalina.logger.FileLogger" directory="logs"
                  prefix="localhost_log." suffix=".txt" timestamp="true" />
          <Context path="web上下文路徑" docBase="虛擬目錄路徑" reloadable="true" debug="0"> </Context>
                 </Host>
                </Engine>
          </Service>
          </Server>

          在tomcat文件夾的conf\catalina\localhost(對于Tomcat6版本及其以上,需要自己創建catalina和localhost這兩個文件夾)
          增加project .xml文件(該文件名的project要和下面的“path=“/xxx"”的xxx相同)
          文件內容:
          <Context path="/project" reloadable="true" docBase="E:\javastudio\oob" workDir="E:\javastudio\oob\work" />
          docBase是項目文件夾的web-inf文件夾的上一層目錄 workDir是指Tomcat解析Jsp轉換為Java文件,并編譯為class存放的文件夾,設置在項目文件夾里面,可以避免移植到其他地方首次讀取jsp文件需要重新解析 。一般格式:項目文件夾\work reloadable是指可以重新加載,一般設置為true,方便使用,不需要經常重啟Tomcat。 以后啟動Tomcat,在瀏覽器輸入http://localhost:8080/project就能訪問該項目的welcome文件。

          ***************
          為什么要不修改server.xml呢?在Tomcat6的doc幫助文檔中,官方是不提倡修改server.xml來添加虛擬目錄的!
                 而我認為,以上使用的方法,非常方便于項目的移植,移植后,只有修改docBase和workDir的值就行了,甚至可以去掉workDir這個屬性

          posted on 2008-06-23 11:12 pasha 閱讀(1553) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

          統計

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          最常用和實用的CSS技巧

          最新隨筆

          搜索

          最新評論

          • 1.?re: SESSION
          • 啊!!原來是這樣啊 終于明白了 謝了!!
          • --ndj

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 隆德县| 临朐县| 喀什市| 汉源县| 盐山县| 长顺县| 吴川市| 松溪县| 广元市| 南投县| 广河县| 丰台区| 仁寿县| 九江市| 温泉县| 东海县| 勐海县| 缙云县| 富民县| 大名县| 宁海县| 博白县| 石家庄市| 惠安县| 澄城县| 唐海县| 兴城市| 湖口县| 武安市| 泰和县| 高唐县| 临清市| 汉川市| 苍山县| 新巴尔虎右旗| 海阳市| 宜君县| 大名县| 扎兰屯市| 平利县| 蒙自县|