現在開發Java Web應用
建立和部署Web內容是一件很簡單的工作
使用Jakarta Tomcat作為Servlet和JSP容器的人已經遍及全世界
Tomcat具有免費
跨平台等諸多特性
並且更新得很快
現在非常的流行
你所需要做的就是
按照你的需求配置Tomcat
只要你正確配置
Tomcat一般都能適合你的要求
下面是一系列關於Tomcat的配置技巧
這些技巧源自於我的書
《Tomcat權威指南》
希望對你有所幫助
—— Jason Brittain
. 配置系統管理(Admin Web Application) 大多數商業化的J
EE服務器都提供一個功能強大的管理界面
且大都采用易於理解的Web應用界面
Tomcat按照自己的方式
同樣提供一個成熟的管理工具
並且絲毫不遜於那些商業化的競爭對手
Tomcat的Admin Web Application最初在
版本時出現
當時的功能包括管理context
data source
user和group等
當然也可以管理像初始化參數
user
group
role的多種數據庫管理等
在後續的版本中
這些功能將得到很大的擴展
但現有的功能已經非常實用了
Admin Web Application被定義在自動部署文件
CATALINA_BASE/webapps/admin
xml
(譯者注
CATALINA_BASE即tomcat安裝目錄下的server目錄)
你必須編輯這個文件
以確定Context中的docBase參數是絕對路徑
也就是說
CATALINA_BASE/webapps/admin
xml 的路徑是絕對路徑
作為另外一種選擇
你也可以刪除這個自動部署文件
而在server
xml文件中建立一個Admin Web Application的context
效果是一樣的
你不能管理Admin Web Application這個應用
換而言之
除了刪除CATALINA_BASE/webapps/admin
xml
你可能什麼都做不了
如果你使用UserDatabaseRealm(默認)
你將需要添加一個user以及一個role到CATALINA_BASE/conf/tomcat
users
xml 文件中
你編輯這個文件
添加一個名叫
admin
的role 到該文件中
如下
<role name=
admin
/>
你同樣需要有一個用戶
並且這個用戶的角色是
admin
象存在的用戶那樣
添加一個用戶(改變密碼使其更加安全)
<user name=
admin
password=
deep_dark_secret
roles=
admin
/>
當你完成這些步驟後
請重新啟動Tomcat
訪//localhost:
/admin
你將看到一個登錄界面
Admin Web Application采用基於容器管理的安全機制
並采用了Jakarta Struts框架
一旦你作為
admin
角色的用戶登錄管理界面
你將能夠使用這個管理界面配置Tomcat
.配置應用管理(Manager Web Application) Manager Web Application讓你通過一個比Admin Web Application更為簡單的用戶界面
執行一些簡單的Web應用任務
Manager Web Application被被定義在一個自動部署文件中
CATALINA_BASE/webapps/manager
xml
你必須編輯這個文件
以確保context的docBase參數是絕對路徑
也就是說CATALINA_HOME/server/webapps/manager的絕對路徑
(譯者注
CATALINA_HOME即tomcat安裝目錄)
如果你使用的是UserDatabaseRealm
那麼你需要添加一個角色和一個用戶到CATALINA_BASE/conf/tomcat
users
xml文件中
接下來
編輯這個文件
添加一個名為
manager
的角色到該文件中
<role name=
manager
>
你同樣需要有一個角色為
manager
的用戶
像已經存在的用戶那樣
添加一個新用戶(改變密碼使其更加安全)
<user name=
manager
password=
deep_dark_secret
roles=
manager
/>
然後重新啟動Tomcat
訪//localhost/manager/list
將看到一個很樸素的文本型管理界面
或者訪//localhost/manager/html/list
將看到一個HMTL的管理界面
不管是哪種方式都說明你的Manager Web Application現在已經啟動了
Manager application讓你可以在沒有系統管理特權的基礎上
安裝新的Web應用
以用於測試
如果我們有一個新的web應用位於/home/user/hello下在
並且想把它安裝到 /hello下
為了測試這個應用
我們可以這麼做
在第一個文件框中輸入
/hello
(作為訪問時的path)
在第二個文本框中輸入
file:/home/user/hello
(作為Config URL)
Manager application還允許你停止
重新啟動
移除以及重新部署一個web應用
停止一個應用使其無法被訪問
當有用戶嘗試訪問這個被停止的應用時
將看到一個
的錯誤——
This application is not currently available
移除一個web應用
只是指從Tomcat的運行拷貝中刪除了該應用
如果你重新啟動Tomcat
被刪除的應用將再次出現(也就是說
移除並不是指從硬盤上刪除)
.部署一個web應用 有兩個辦法可以在系統中部署web服務
> 拷貝你的WAR文件或者你的web應用文件夾(包括該web的所有內容)到$CATALINA_BASE/webapps目錄下
> 為你的web服務建立一個只包括context內容的XML片斷文件
並把該文件放到$CATALINA_BASE/webapps目錄下
這個web應用本身可以存儲在硬盤上的任何地方
如果你有一個WAR文件
你若想部署它
則只需要把該文件簡單的拷貝到CATALINA_BASE/webapps目錄下即可
文件必須以
war
作為擴展名
一旦Tomcat監聽到這個文件
它將(缺省的)解開該文件包作為一個子目錄
並以WAR文件的文件名作為子目錄的名字
接下來
Tomcat將在內存中建立一個context
就好象你在server
xml文件裡建立一樣
當然
其他必需的內容
將從server
xml中的DefaultContext獲得
部署web應用的另一種方式是寫一個Context XML片斷文件
然後把該文件拷貝到CATALINA_BASE/webapps目錄下
一個Context片斷並非一個完整的XML文件
而只是一個context元素
以及對該應用的相應描述
這種片斷文件就像是從server
xml中切取出來的context元素一樣
所以這種片斷被命名為
context片斷
舉個例子
如果我們想部署一個名叫MyWebApp
war的應用
該應用使用realm作為訪問控制方式
我們可以使用下面這個片斷
<!
Context fragment for deploying MyWebApp
war
>
<Context path=
/demo
docBase=
webapps/MyWebApp
war
debug=
privileged=
true
>
<Realm className=
org
apache
catalina
realm
UserDatabaseRealm
resourceName=
UserDatabase
/>
</Context>
把該片斷命名為
MyWebApp
xml
然後拷貝到CATALINA_BASE/webapps目錄下
這種context片斷提供了一種便利的方法來部署web應用
你不需要編輯server
xml
除非你想改變缺省的部署特性
安裝一個新的web應用時不需要重啟動Tomcat
.配置虛擬主機(Virtual Hosts) 關於server
xml中
Host
這個元素
只有在你設置虛擬主機的才需要修改
虛擬主機是一種在一個web服務器上服務多個域名的機制
對每個域名而言
都好象獨享了整個主機
實際上
大多數的小型商務網站都是采用虛擬主機實現的
這主要是因為虛擬主機能直接連接到Internet並提供相應的帶寬
以保障合理的訪問響應速度
另外虛擬主機還能提供一個穩定的固定IP
基於名字的虛擬主機可以被建立在任何web服務器上
建立的方法就是通過在域名服務器(DNS)上建立IP地址的別名
並且告訴web服務器把去往不同域名的請求分發到相應的網頁目錄
因為這篇文章主要是講Tomcat
我們不准備介紹在各種操作系統上設置DNS的方法
如果你在這方面需要幫助
請參考《DNS and Bind》一書
作者是Paul Albitz and Cricket Liu (O
Reilly)
為了示范方便
我將使用一個靜態的主機文件
因為這是測試別名最簡單的方法
在Tomcat中使用虛擬主機
你需要設置DNS或主機數據
為了測試
為本地IP設置一個IP別名就足夠了
接下來
你需要在server
xml中添加幾行內容
如下
<Server port=
shutdown=
SHUTDOWN
debug=
>
<Service name=
Tomcat
Standalone
>
<Connector className=
yote
tomcat
CoyoteConnector
port=
minProcessors=
maxProcessors=
enableLookups=
true
redirectPort=
/>
<Connector className=
yote
tomcat
CoyoteConnector
port=
minProcessors=
maxProcessors=
acceptCount=
debug=
scheme=
https
secure=
true
/>
<Factory className=
yote
tomcat
CoyoteServerSocketFactory
clientAuth=
false
protocol=
TLS
/>
</Connector>
<Engine name=
Standalone
defaultHost=
localhost
debug=
>
<!
This Host is the default Host
>
<Host name=
localhost
debug=
appBase=
webapps
unpackWARs=
true
autoDeploy=
true
>
<Context path=
docBase=
ROOT
debug=
/>
<Context path=
/orders
docBase=
/home/ian/orders
debug=
reloadable=
true
crossContext=
true
>
</Context>
</Host>
<!
This Host is the first
Virtual Host
:
>
<Host name=
appBase=
/home/example/webapp
>
<Context path=
docBase=
/>
</Host>
</Engine>
</Service>
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28314.html