這只小貓玩了它差不多也有一年多了,還沒仔細瞅瞅長個什么樣。當它耍性子的時候,常常弄的我手足無措,因為不懂它說出的一大堆亂七八糟的洋話。為了能讓它說start就start,說down就down,下面要開始一段我訓獸師的經(jīng)歷 ^_^。
寵物簡介
Jakarta Tomcat服務(wù)器是一種Servlet/JSP容器,經(jīng)歷了3.x到4.0.x到4.1.x的變遷,現(xiàn)在最新的版本為5.0.x,支持Servlet2.4和JSP2.0規(guī)范,從apache網(wǎng)站上下載Tomcat 5,在環(huán)境變量中配置一下JAVA_HOME,小貓就能生靈活現(xiàn)的跑起來了。若小貓啟動失敗,DOS窗口會自動關(guān)閉,若運行catalina run命令DOS窗口是不會自動關(guān)閉的。
tomcat中有三個放置java庫的地方,分別是/server/lib、/shared/lib和/common/lib。
區(qū)別:/server/lib - 其中的jar文件只能被tomcat服務(wù)器訪問。
/shared/lib - 其中的jar文件可以被所有的Web應(yīng)用訪問,但不能被tomcat服務(wù)器訪問到。
/common/lib - Web服務(wù)和tomcat服務(wù)器都可以訪問的到。
server.xml文件解析 - 文件位置是<%CATALINA_HOME%>/conf/server.xml
配置虛擬主機
Host元素代表虛擬主機,在同一個Engine元素下可以配置多個虛擬主機。打開server.xml文件可以發(fā)現(xiàn)Engine元素下已經(jīng)有一個名為localhost的Host元素了,可以在它后面加入下列代碼:
<
Host?
name
="www.myname.com"
?debug
="0"
?appBase
="c:\myname"
?unpackWar
="true"
?autoDeploy
="true"
>
??? <
alias
>
www.myname1.com
</
alias
>
??? <
alias
>
www.myname2.com
</
alias
>
??? <
Context?
pathh
="/helloapp"
?docBase
="helloapp"
?debug
="0"
?reloadable
="true"
/>
</
Host
>
?
Session的使用
Session是一種用來跟蹤用戶狀態(tài)的機制,那它是怎么實現(xiàn)的呢?Servlet容器通過在客戶端瀏覽器中保存一個Session ID來跟蹤Session,調(diào)用session.getID()可以看到你的Session ID是多少。如果客戶端支持Cookie,就把Session ID作為Cookie保持在瀏覽器中,現(xiàn)在絕大多數(shù)瀏覽器都會把Cookie功能打開,但如果用戶禁止了Cookie呢?Java Servlet API中提出了另外一種機制,Servlet容器可以重寫客戶requst的URL,把Session ID添加到URL信息中,HttpServletResponse接口提供了這樣的方法:public String encodeURL(String url)-先判斷如果沒有啟用Session,例如jsp中<%@ page session="false"%>或執(zhí)行了session.invalideate(),那么直接返回url,在判斷客戶端師父支持Cookie,如果不支持,就在url中加入Session ID的信息,然后返回修改后的url。
Session的管理
當一個sesson開始時,Servlet容器會創(chuàng)建一個HttpSession對象,在某些情況下把這些Httpsession對象從內(nèi)存中轉(zhuǎn)移到文件系統(tǒng)中或數(shù)據(jù)庫中,需要訪問的時候在把它們載入到內(nèi)存中來。這樣做的好處有兩點:節(jié)約了內(nèi)存的消耗,當web服務(wù)器產(chǎn)生故障時,還可以從文件系統(tǒng)或數(shù)據(jù)庫中恢復Session的數(shù)據(jù)。
對于Session的管理,小貓?zhí)峁┝藘蓚€實現(xiàn)類:org.apache.catalina.session.StandardManager和org.apache.catalina.session.PersistentManager。
StandardManager -是默認的方法,當Tomcat服務(wù)器重啟或重載的時候,會把Session對象保存到
<%CATALINA_HOME%>/work/Catalina/honstname/applicatonname/SESSIONS.ser(默認值)文件中,每個對象對應(yīng)一個文件,以Session ID為文件名,例如:
<
Context?
path
="/helloapp"
?docBase
="helloapp"
?debug
="0"
?reloadable
="true"
>
??? <
Manager?
className
="org.apache.catalina.session.StandardManager"
?debug
="0"
?
????? maxActiveSessions="-1" checkInterval="60"
?/
>
</
Context
>
參數(shù)說明:checkInterval-檢查session是否過期的時間間隔,以秒為單位,缺省值是60秒;
maxActiveSessions-可處于活動狀態(tài)的session數(shù)。
PersistentManager -提供了更加靈活的管理方式,具有容錯能力,可以及時把Session備份到Session Store中,可以控制內(nèi)存中Session的數(shù)量。
小貓還提供了實現(xiàn)持久化Session Store的接口,org.apache.catalina.Store,目前提供了兩個具體實現(xiàn)類:org.apache.catalina.FileStore和org.apache.catalina.JDBCStore。
server.xml中的配置File Store -
<
Context?
path
="/helloapp"
?docBase
="helloapp"
?debug
="0"
?reloadable
="true"
>
??? <
Manager?
className
="org.apache.catalina.session.PersistentManager"
?debug
="0"
?saveOnRestart
="true"
?
????????? maxActiveSessions
="-1"
?minIdleSwap
="-1"
?maxIdleSwap
="-1"
?maxIdleBackup
="-1"
?
>
??? <
Store?
className
="org.apache.catalina.session.FileStore"
?directory
="mydir"
/>
??? </
Manager
>
</
Context
>
參數(shù)說明:saveOnRestart-服務(wù)器關(guān)閉時,是否將所有的session保存到文件中;
maxActiveSessions-可處于活動狀態(tài)的session數(shù);
minIdleSwap/maxIdleSwap-session處于不活動狀態(tài)最短/長時間(s),sesson對象轉(zhuǎn)移到File Store中;
maxIdleBackup-超過這一時間,將session備份。(-1表示沒有限制)
JDBCStore配置的區(qū)別:
<
Store?
calssName
="org.apache.catalina.JDBCStore"
?driverName
="com.mysql.jdbc.Driver"
?
??? connectionURL
="jdbc:mysql://localhost/tomsessionDB?user=root&password="
?
??? sessionTable
="tomcat_session"
?sessionIdCol
="session_id"
?sessionDataCol
="session_data"
?
??? sessionValidCol
="session_valid"
?sessionMaxInactiveCol
="max_inactive"
?
??? sessionLastAccessedCol
="last_access"
?sessionAppCol
="app_name"
?checkInterval
="60"
?debug
="99"
?
/>
Session失效時間的設(shè)定
在web.xml文件中,位于<servlet-mapping>和<welcome-file-list>元素之間加入如下代碼,單位為分鐘:
<
session-config
>
???
??? <
session-timeout
>
60
</
session-timeout
>
</
session-config
>
Tomcat的admin平臺和manager平臺
這是Tomcat中自帶的兩個Web應(yīng)用,位于<%CATALINA_HOME%>/server/webapps/admin(manager),訪問地址是http://localhsot:8080/admin(manager)。要訪問這兩個Web應(yīng)用,需要在
<%CATALINA_HOME%>/conf/tomcat-users.xml中添加如下內(nèi)容:
<user username="admin" password="1234" role="admin"/>?????????? //對應(yīng)admin Web應(yīng)用
<user username="manager" password="1234" role="manager"/>?? //對應(yīng)manager Web應(yīng)用
admin平臺把所有可配置的信息分為三類:Tomcat Server、Resources、User Definition。
Tomcat Server-相當于server.xml中的<Server>元素及其子元素,<Service>、<Host>、<Context>、<Resources>、<Date Source>。
Resources-相當于server.xml中的<GlobalNamingResources>,共有四種資源:Date Source(JNDI數(shù)據(jù)源)、Mail Sessioin(JNDI Mail Session資源)、Environment Entry(環(huán)境變量)、User Database(安全域中的用戶數(shù)據(jù)庫)。
User Definition-與tomcat-users.xml相對應(yīng)。
manager平臺-列出來所有Web應(yīng)用和狀態(tài),并提供了Start、Stop、Reload、 Undeploy命令,還可以發(fā)布
<%CATALINA_HOME%>/webapps目錄下的Web應(yīng)用或系統(tǒng)文件任意位置的WAR文件。
posted on 2006-06-07 14:41
崛起的程序員 閱讀(249)
評論(0) 編輯 收藏