最近忙着畢業答辯,填寫材料,好多事情都給耽擱了!一個月都沒有繼續翻譯tomcat,這回有點時間趕緊補上。
這部分,其實對開發者或者tomcat管理者來說,只要會登錄頁面管理器或者使用寫簡單的http就可以了,如果想要通過java方法調用,那還需要看一些API:
這里就簡單介紹下如何通過頁面進行tomcat的管理。
Tomcat管理器是什么?
tomcat經過不斷的沉淀,不僅僅是個JSP和Servlet的容器,它也可以當做一個生產環境的服務器來使用,國外的很多大型企業也都有使用Tomcat的例子。
因此,對於生產環境的web服務器來說,在不關閉或者重啟服務器的情況下,部署或者停止某些應用是很必要的。
通過tomcat管理器就可以做到這一點。
因此,為了支持這個功能,tomcat在默認的下載包中webapps目錄下包含了一個manager應用(這個是默認就有的)。
用戶就是通過訪問這個應用,來控制其他的應用的。
這個應用主要包括以下的 功能 :
1 根據上傳的war包部署文件
2 通過配置上下文路徑,部署文件
3 列出當前所有部署的應用,以及其會話信息
4 當/WEB-INF/classes和/WEB-INF/lib有修改時,重新加載應用
5 列出系統以及JVM的屬性值
6 列出可用的JNDI資源
7 列出數據庫中的安全角色
8 開啟關閉應用
9 關閉正在運行的應用
10 解除應用的部署,刪除其目錄
如何配置tomcat管理器?
tomcat支持多種管理方式:
1 manager-gui 通過html頁面管理(由於管理器應用使用CSRF方式配置,所以使用了這種方式,就無法使用2、3方式)
2 manager-script 通過文本管理
3 manager-jmx 通過JMX管理
4 manager-status 通過只讀接口管理
其中通過web頁面也就是GUI來管理tomcat的大體過程如下:
由於管理器manager應用,不是任何人都可以登錄的,因此需要配置用戶密碼:
修改tomcat下conf下的tomcat-users.xml文件
<?xml version='1.0' encoding='utf-8'?> <tomcat-users> <role rolename="manager"/> <user username="xingoo" password="test" roles="manager"/> </tomcat-users>
添加user和role標簽,注意roles里面的角色名字,必須包含manager。
登錄后的配置界面如下,剩下的點來點去的,就不多啰嗦了。
如何通過http報文獲取管理器信息?
也可以使用http報文獲取tomcat的信息,例如:
http://{host}:{port}/manager/{command}?{parameters}
例如發布應用程序,可以使用:
http://localhost:8080/manager/deploy?path=/foo
其他的可以參考原文官方手冊,這里一般不適用這種方式,因此也不過多的研究了。
一些疑問!有待解決
官方文檔中,可以配置管理器登錄的IP或者域名限制,實在manager.xml中,配置如下的信息:
<Context docBase="${catalina.home}/webapps/manager" privileged="true" antiResourceLocking="false" antiJARLocking="false"> <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="49.140.69.48"/> </Context>
可惜測試了下,沒好使。其他IP仍然可以訪問,很納悶!
這個問題還要多多指教,之后也會更新原因。
參考
【1】Tomcat6.0 Manager:http://tomcat.apache.org/tomcat-6.0-doc/manager-howto.html