Tomcat整體目錄:
一、bin文件(存放啟動和關閉tomcat腳本)
其中.bat和.sh文件很多都是成對出現的,作用是一樣的,一個是Windows的,一個是Linux。
① startup文件:主要是檢查catalina.bat/sh 執行所需環境,並調用catalina.bat 批處理文件。啟動tomcat。
異常:打開可能有閃退的問題。原因可能有以下兩點:
1)缺少環境變量配置,startup會檢查你的電腦環境變量是否有JAVA_HOME。
2)已經開啟了Tomcat容器,再次開啟端口號會被占用。
java.net.BindException: Address already in use: JVM_Bind
② catalina文件:真正啟動Tomcat文件,可以在里面設置jvm參數。
異常:可能出現內存溢出錯誤可以考慮修改它
1)java.lang.OutOfMemoryError: Java heap space
Tomcat默認可以使用的內存為128MB,在較大型的應用項目中,這點內存是不夠的,從而導致客戶端顯示500錯誤。
Windows環境下修改catalina.bat文件,在文件開頭增加如下設置:set JAVA_OPTS=-Xms256m -Xmx512m
Linux環境下修改catalina.sh文件,在文件開頭增加如下設置:JAVA_OPTS=’-Xms256m -Xmx512m’
其中,-Xms設置初始化內存大小,-Xmx設置可以使用的最大內存。
2) java.lang.OutOfMemoryError: PermGen space
PermGen space的全稱是Permanent Generation space,是指內存的永久保存區域,這塊內存主要是被JVM
存放Class和Meta信息的,Class在被Loader時就會被放到PermGen space中,它和存放類實例(Instance)的
Heap區域不同,GC(Garbage Collection)不會在主程序運行期對PermGen space進行清理,所以如果你的應用
中有很CLASS的話,就很可能出現PermGen space錯誤,這種錯誤常見在web服務器對JSP進行pre compile的
時候。如果你的WEB APP下用了大量的第三方jar, 其大小超過了jvm默認的大小(4M)那么就會產生此錯誤信息了
解決方法:
在catalina.bat的第一行增加:(Windows)
set JAVA_OPTS=-Xms64m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m -
XX:MaxPermSize=256m
在catalina.sh的第一行增加:(Linux)
JAVA_OPTS=-Xms64m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m -
XX:MaxPermSize=256m
③ shutdown文件:關閉Tomcat
④ Tomcat8文件:相當於控制台直接輸入startup
④ Tomcat8w文件:圖像化控制Tomcat
如果想啟動Tomcat,就點擊Start。終止就點擊Stop。
異常:點擊Tomcat8和Tomcat8w的時候出現錯誤
解決:在命令行執行 service.bat install(必須在bin文件目錄下執行),再點擊就OK了。
二、conf文件(存放tomcat的配置文件)
① Catalina文件:用於存儲自定義部署Web應用的路徑(上一節詳細闡述到了,如何部署)
② server.xml:
1 <?xml version="1.0" encoding="UTF-8"?> 2 3 <!-- Server代表一個 Tomcat 實例。可以包含一個或多個 Services,其中每個Service都有自己的Engines和Connectors。 4 port="8005"指定一個端口,這個端口負責監聽關閉tomcat的請求 5 --> 6 <Server port="8005" shutdown="SHUTDOWN"> 7 <!-- 監聽器 --> 8 <Listener className="org.apache.catalina.startup.VersionLoggerListener" /> 9 <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> 10 <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> 11 <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> 12 <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" /> 13 <!-- 全局命名資源,定義了UserDatabase的一個JNDI(java命名和目錄接口),通過pathname的文件得到一個用戶授權的內存數據庫 --> 14 <GlobalNamingResources> 15 <Resource name="UserDatabase" auth="Container" 16 type="org.apache.catalina.UserDatabase" 17 description="User database that can be updated and saved" 18 factory="org.apache.catalina.users.MemoryUserDatabaseFactory" 19 pathname="conf/tomcat-users.xml" /> 20 </GlobalNamingResources> 21 <!-- Service它包含一個<Engine>元素,以及一個或多個<Connector>,這些Connector元素共享用同一個Engine元素 --> 22 <Service name="Catalina"> 23 <!-- 24 每個Service可以有一個或多個連接器<Connector>元素, 25 第一個Connector元素定義了一個HTTP Connector,它通過8080端口接收HTTP請求;第二個Connector元素定 26 義了一個JD Connector,它通過8009端口接收由其它服務器轉發過來的請求. 27 --> 28 <Connector port="8080" protocol="HTTP/1.1" 29 connectionTimeout="20000" 30 redirectPort="8443" /> 31 <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> 32 <!-- 每個Service只能有一個<Engine>元素 --> 33 <Engine name="Catalina" defaultHost="localhost"> 34 <Realm className="org.apache.catalina.realm.LockOutRealm"> 35 <Realm className="org.apache.catalina.realm.UserDatabaseRealm" 36 resourceName="UserDatabase"/> 37 </Realm> 38 <!-- 默認host配置,有幾個域名就配置幾個Host,但是這種只能是同一個端口號 --> 39 <Host name="localhost" appBase="webapps" 40 unpackWARs="true" autoDeploy="true"> 41 <!-- Tomcat的訪問日志,默認可以關閉掉它,它會在logs文件里生成localhost_access_log的訪問日志 --> 42 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" 43 prefix="localhost_access_log" suffix=".txt" 44 pattern="%h %l %u %t "%r" %s %b" /> 45 </Host> 46 <Host name="www.hzg.com" appBase="webapps" 47 unpackWARs="true" autoDeploy="true"> 48 <Context path="" docBase="/myweb1" /> 49 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" 50 prefix="hzg_access_log" suffix=".txt" 51 pattern="%h %l %u %t "%r" %s %b" /> 52 </Host> 53 </Engine> 54 </Service> 55 </Server>
訪問http://localhost:8080/aaa和http://www.hzg.com/8080/aaa效果一致。
③ tomcat-users.xml:配置Tomcat的server的manager信息
1 <?xml version="1.0" encoding="UTF-8"?> 2 <tomcat-users xmlns="http://tomcat.apache.org/xml" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd" 5 version="1.0"> 6 <role rolename="manager-gui"/> 7 <user username="manager" password="manager" roles="manager-gui"/> 8 </tomcat-users>
三、lib文件(存放Tomcat運行需要的庫文件)
存放Tomcat運行需要的庫文件
四、logs文件(存放Tomcat執行時的LOG文件)
1、catalina.日期.log:控制台日志
2、commons-daemon.日期.log:啟動、重啟和停止對Tomcat的操作日志
3、host-manager.日期.log:Tomcat管理頁面中的host-manager的操作日志
4、localhost.日期.log:Web應用的內部程序日志
5、localhost_access_log.日期:用戶請求Tomcat的訪問日志(這個文件在conf/server.xml里配置)
6、manager.日期.log:Tomcat管理頁面中的manager app的操作日志。
五、temp文件(存放Tomcat執行時的臨時文件)
temp目錄用戶存放tomcat在運行過程中產生的臨時文件。(清空不會對tomcat運行帶來影響)
六、webapps文件(存放Tomcat的應用文件)
webapps目錄用來存放應用程序,當tomcat啟動時會去加載webapps目錄下的應用程序。可以以文件夾、war包、jar包的形式發布應用。
當然,你也可以把應用程序放置在磁盤的任意位置,在配置文件中映射好就行。
七、work文件(存放Tomcat運行時產生的class文件)
work目錄用來存放tomcat在運行時的編譯后文件,例如JSP編譯后的文件。清空work目錄,然后重啟tomcat,可以達到清除緩存的作用。
-------------------------------------------------------------------------------------------------------------------------