整合tomcat的一些配置
我一直對tomcat不是很了解,上網了解tomcat的一些基礎配置,順便整合一下。
1、 context.xml
1. 在tomcat 5.5之前
Context體現在/conf/server.xml中的Host里的<Context>元素,它由Context接口定義。每個<Context元素代表了運行在虛擬主機上的單個Web應用
? ?<Context debug="0" path="/webDemo" docBase="webDemo" debug="0" reloadable="true"> ??
1、debug:表示log中記錄異常的控制等級,數值越大,記錄越詳細。
2、path:即要建立的虛擬目錄,,注意是/webDemo,它指定訪問Web應用的URL入口,如http://localhost:8080/webDemo/****
3、docBase:為實際目錄在硬盤上的位置(應用程序的路徑或者是WAR文件存放的路徑)
4、reloadable:如果這個屬性設為true,Tomcat服務器在運行狀態下會監視在WEB-INF/classes和Web-INF/lib目錄CLASS文件的改變,如果監視到有class文件被更新,服務器自動重新加載Web應用,這樣我們可以在不重起tomcat的情況下改變應用程序
一個Host元素中嵌套任意多的Context元素。每個Context的路徑必須是唯一的,由path屬性定義。另外,你必須定義一個path=“”的context,這個Context稱為該虛擬主機的缺省web應用,用來處理那些不能匹配任何Context的Context路徑的請求。
? 2. 在tomcat 5.5之后
不推薦在server.xml中進行配置,而是在/conf/context.xml中進行獨立的配置。因為server.xml是不可動態重加載的資源,服務器一旦啟動了以后,要修改這個文件,就得重啟服務器才能重新加載。而context.xml文件則不然,tomcat服務器會定時去掃描這個文件。一旦發現文件被修改(時間戳改變了),就會自動重新加載這個文件,而不需要重啟服務器。
<Context path="/webDemo" docBase="webDemo" debug="0" reloadable="true" privileged="true" ?><WatchedResource>WEB-INF/web.xml</WatchedResource><WatchedResource>WEB-INF/webDemo.xml</WatchedResource> 監控資源文件,如果web.xml || webDemo.xml改變了,則自動重新加載改應用。<Resource name="jdbc/testSiteds" 表示指定的jndi名稱 auth="Container" 表示認證方式,一般為Container type="javax.sql.DataSource" maxActive="100" 連接池支持的最大連接數 maxIdle="30" 連接池中最多可空閑maxIdle個連接 maxWait="10000" 連接池中連接用完時,新的請求等待時間,毫秒 username="root" 表示數據庫用戶名 password="root" 表示數據庫用戶的密碼 driverClassName="com.mysql.jdbc.Driver" 表示JDBC DRIVER url="jdbc:mysql://localhost:3306/testSql" /> 表示數據庫URL地址</Context>
3、context.xml的三個作用范圍
1. tomcat server級別:
在/conf/context.xml里配置
2. Host級別:
在/conf/Catalina/${hostName}里添加context.xml,繼而進行配置
3. web app 級別:
在/conf/Catalina/${hostName}里添加${webAppName}.xml,繼而進行配置
?
?server.xml
| 元素名 | 屬性 | 解釋 |
| server | port | 指定一個端口,這個端口負責監聽關閉tomcat的請求 |
| shutdown | 指定向端口發送的命令字符串 | |
| service | name | 指定service的名字 |
| Connector(表示客戶端和service之間的連接) | port | 指定服務器端要創建的端口號,并在這個斷口監聽來自客戶端的請求 |
| minProcessors | 服務器啟動時創建的處理請求的線程數 | |
| maxProcessors | 最大可以創建的處理請求的線程數 | |
| enableLookups | 如果為true,則可以通過調用request.getRemoteHost()進行DNS查詢來得到遠程客戶端的實際主機名,若為false則不進行DNS查詢,而是返回其ip地址 | |
| redirectPort | 指定服務器正在處理http請求時收到了一個SSL傳輸請求后重定向的端口號 | |
| acceptCount | 指定當所有可以使用的處理請求的線程數都被使用時,可以放到處理隊列中的請求數,超過這個數的請求將不予處理 | |
| connectionTimeout | 指定超時的時間數(以毫秒為單位) | |
| URIEncoding | 指定默認編碼ISO-8859-1編碼,我們基本會設置UTF-8。(中文路徑、文件等問題) | |
| Engine(表示指定service中的請求處理機,接收和處理來自Connector的請求) | defaultHost | 指定缺省的處理請求的主機名,它至少與其中的一個host元素的name屬性值是一樣的 |
| Context(表示一個web應用程序,通常為WAR文件,關于WAR的具體信息見servlet規范) | docBase | 應用程序的路徑或者是WAR文件存放的路徑 |
| path | 表示此web應用程序的url的前綴,這樣請求的url為http://localhost:8080/path/**** | |
| reloadable | 這個屬性非常重要,如果為true,則tomcat會自動檢測應用程序的/WEB-INF/lib?和/WEB-INF/classes目錄的變化,自動裝載新的應用程序,我們可以在不重起tomcat的情況下改變應用程序 | |
| host(表示一個虛擬主機) | name | 指定主機名 |
| appBase | 應用程序基本目錄,即存放應用程序的目錄 | |
| unpackWARs | 如果為true,則tomcat會自動將WAR文件解壓,否則不解壓,直接從WAR文件中運行應用程序 | |
| Logger(表示日志,調試和錯誤信息) | className | 指定logger使用的類名,此類必須實現org.apache.catalina.Logger?接口 |
| prefix | 指定log文件的前綴 | |
| suffix | 指定log文件的后綴 | |
| timestamp | 如果為true,則log文件名中要加入時間,如下例:localhost_log.2001-10-04.txt | |
| Realm(表示存放用戶名,密碼及role的數據庫) | className | 指定Realm使用的類名,此類必須實現org.apache.catalina.Realm接口 |
| Valve(功能與Logger差不多,其prefix和suffix屬性解釋和Logger?中的一樣) | className | 指定Valve使用的類名,如用org.apache.catalina.valves.AccessLogValve類可以記錄應用程序的訪問信息 |
| directory | 指定log文件存放的位置 | |
| pattern | 有兩個值,common方式記錄遠程主機名或ip地址,用戶名,日期,第一行請求的字符串,HTTP響應代碼,發送的字節數。combined方式比common方式記錄的值更多 |
?
Web.xml文件的作用
Web.xml依次定議了如下元素:?
<web-app> <display-name></display-name> 定義了WEB應用的名字 <description></description> 聲明WEB應用的描述信息 <filter></filter> <filter-mapping></filter-mapping> <servlet></servlet> <servlet-mapping></servlet-mapping> <session-config></session-config> <welcome-file-list></welcome-file-list> <taglib></taglib> <resource-ref></resource-ref> <security-constraint></security-constraint> <login-config></login-config> </web-app> 在web.xml中元素定義的先后順序不能顛倒,否則Tomcat服務器可能會拋出SAXParseException.<!-- filter 配置Servlet過濾器 filter-name 定義過濾器的名字。當有多個過濾器時,不能同名 filter-class 指定實現這一過濾的類,這個類負責具體的過濾事務 --> <filter> <filter-name>SampleFilter</filter-name> <filter-class>mypack.SampleFilter</filter-class> </filter> <!-- filter-mapping 設定過濾器負責過濾的URL filter-name 過濾器名。這里的名字一定要和filter中的過濾器名匹配 url-pattern 指定過濾器負責過濾的URL --> <filter-mapping> <filter-name>SampleFilter</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping> <!-- servlet 配置Servlet. servlet-name 定義Servlet的名字 servlet-class 指定實現這個servlet的類 init-param 定義Servlet的初始化參數和參數值,可有多個init-param。在servlet類中通過getInitParamenter(String name)方法訪問初始化參數 load-on-startup 指定當Web應用啟動時,裝載Servlet的次序。 當值為正數或零時:Servlet容器先加載數值小的servlet,再依次加載其他數值大的servlet. 當值為負或未定義:Servlet容器將在Web客戶首次訪問這個servlet時加載它 --> <servlet> <servlet-name>SampleServlet</servlet-name> <servlet-class>mypack.SampleServlet</servlet-class> <init-param> <param-name>initParam1</param-name> <param-value>2</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <!-- 配置servlet映射(下面代碼為SampleServlet指定的相對URL為"/sample": servlet-name 指定servlet的名字,這里的名字應該和<Servlet>元素中定義的名字匹配。 url-pattern 指定訪問這個servlet的URL。只需給出相對路徑。 --> <servlet-mapping> <servlet-name>SampleServlet</servlet-name> <url-pattern>/sample</url-pattern> </servlet-mapping> <!--配置session session用來設定HttpSession的生命周期。單位(秒)--> <session-config> <session-timeout>30</session-timeout> </session-config> <!--配置Wel0come0文件清單--> <welcome-file-list> <welcome-file>login.jsp</welcome-file> <welcome-file>index.htm</welcome-file> </welcome-file-list> <!-- 配置Tag Library taglib-uri 設定Tag Library的唯一標識符,在Web應用中將根據這一標識符來引用Tag Library taglib-location 指定和Tag Library對應的TLD文件的位置 --> <taglib> <taglib-uri>/mytaglib</taglib-uri> <taglib-location>/WEB-INF/mytaglib.tld</taglib-location> </taglib> <!-- 配置資源引用 description 對所引用的資源的說明 res-ref-name 指定所引用資源的JNDI名字 res-type 指定所引用資源的類名字 res-auth 指定管理所引用資源的Manager,它有兩個可選值: Container:由容器來創建和管理resource Application:同WEB應用來創建和管理Resource --> <resource-ref> <description>DB Connection</description> <res-ref-name>jdbc/sampleDB</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> <!-- 配置安全約束(以下代碼指定當用戶訪問該WEB應用下的所有資源時,必須具備guest角色) web-resource-collection 聲明受保護的WEB資源 auth-constraint 聲明可以訪問受保護資源的角色,可以包含多個<role-name>子元素 web-resource-name 標識受保護的WEB資源 url-pattern 指定受保護的URL路徑 --> <Security-constraint> <web-resource-collection> <web-resource-name>sample appliction</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>guest</role-name> </auth-constraint> </Security-constraint> <!-- 配置安全驗證登錄界面:指定當WEB客戶訪問受保護的WEB資源時,系統彈出的登錄對話框的類型。 auth-method 指定驗證方法,它有三個可選值:BASIC(基本驗證)、DIGEST(摘要驗證)、FORM(表單驗證) realm-name 設定安全域的名稱 form-login-config 當驗證方法為FORM時,配置驗證網頁和出錯網頁 form-login-page 當驗證方法為FORM時,設定驗證網頁 form-error-page 當驗證方法為FORM時,設定出錯網頁 --> <login-config> <auth-method>FORM</auth-method> <realm-name> Tomcat Server Configuration form-Based Authentication Area </realm-name> <form-login-config> <form-login-page>/login.jsp</form-login-page> <form-error-page>/error.jsp</form-error-page> </form-login-config> </login-config> <!--配置對安全驗證角色的引用--> <security-role> <description> The role that is required to log into the sample application </description> <role-name>guest</role-name> </security-role> </web-app>?
tomcat-users.xml文件的作用
1.關于用戶角色、管理員的信息都在這個配置文件中。
2.登錄用戶默認是注釋掉的,把 <!-- ?-->去掉才能生效。
3.在配置文件<tomcat-users>節點下添加管理員配置:
?
最后補充一句,在eclipse下debug啟動tomcat默認熱部署,熱加載。大家可以試試!
?
轉載于:https://www.cnblogs.com/zrl66/p/tomcat.html
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的整合tomcat的一些配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于着色器LinearGradient的
- 下一篇: ③pycharm的基本使用