找回Tomcat6中Administration Web Application
在Tomcat6.x中安装配置Tomcat5.5.28中的Administration Web Application
source: http://bbs.cnpp.info/thread-137-1-1.html
Tomcat6中当前没有可用的Administration Web Application下载,可暂时在Tomcat6中配置使用Tomcat5.5.28的Administration Web Application。
下载:http://tomcat.apache.org/download-55.cgi
1、下载后解开压缩包,Copy包中apache-tomcat-5.5.28/server/webapps/下的admin文件夹到$CATALINA_HOME/webapps 文件夹中。
2、Copy $CATALINA_HOME/webapps/admin/文件夹中或包中apache-tomcat-5.5.28/conf/Catalina /localhost/下的admin.xml文件到$CATALINA_HOME/webapps/admin/META-INF /context.xml(或直接Copy到$CATALINA_HOME/conf/Catalina/localhost/admin.xml),并更改其中<Context>下的docBase属性到正确的路径:"${catalina.home}/webapps/admin"。
3、在浏览器打开admin对应的web url(如:http://localhost:8080/admin/),如果有类似于"HTTP Status 503 - Servlet action is currently unavailable"的错误,请查看$CATALINA_HOME/logs路径下的相关日志文件,查找错误信息。常见的错误如下:
java.lang.NoClassDefFoundError: Could not initialize class org.apache.struts.taglib.html.HtmlTag
没有找到structs package,从http://struts.apache.org/download.cgi#struts2181下载struts-2.1.8.1-lib.zip解压后把struts-core-1.3.10.jar Copy到$CATALINA_HOME/lib文件夹中。
java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
没有找到 org.apache.commons.logging,从http://commons.apache.org/downloads/download_logging.cgi下载commons-logging-1.1.1-bin.zip解压后把commons-logging-1.1.1.jar Copy到$CATALINA_HOME/lib文件夹中。
java.lang.ClassNotFoundException: org.apache.commons.modeler.Registry
没有找到 org.apache.commons.modeler,从http://commons.apache.org/downloads/download_modeler.cgi下载commons-modeler-2.0.1.zip解压后把commons-modeler-2.0.1.jar Copy到$CATALINA_HOME/lib文件夹中。
Copy完后重启Tomcat.
4、所有错误解决后,刷新http://localhost:8080/admin/,可看到如下登录界面:
没用配置用户权限登录会出错:
HTTP Status 403 - Access to the requested resource has been denied
5、打开$CATALINA_HOME/webapps/admin/WEB-INF/web.xml,可以看到Administration Web Application使用名为admin的role登录:
1. ...
2. <!-- Security roles referenced by this web application -->
3. <security-role>
4. <description>
5. The role that is required to log in to the Administration Application
6. </description>
7. <role-name>admin</role-name>
8. </security-role>
9. ...
修改Tomcat的用户配置文件:$CATALINA_HOME/conf/tomcat-users.xml(server.xml中配置的名为UserDatabase的Global Resource的Location属性指向的文件),添加admin role,并添加一个role为admin的用户:admin/admin:
1. <?xml version='1.0' encoding='utf-8'?>
2. <tomcat-users>
3. ...
4. <role rolename="admin"/>
5. ...
6. <user username="admin" password="admin" roles="admin"/>
7. ...
8. </tomcat-users>
如果已存在名为admin的user,则为该user 添加admin role:
1. ...
2. <user username="admin" password="admin" roles="admin,manager"/>
3. ...
复制代码
配置完用户后重启Tomcat.
6、使用在上一步中配置的用户admin,密码admin登录成功:
存在的问题:
虽然在Tomcat5.5.28的Administration Web Application中可以读取和管理Tomcat6的配置信息,但存在一个问题,就是所有界面上所做的配置只能保存到内存中,而无法保存到具体的 xml配置文件中,重启Tomcat6后所做的配置更改就会丢失。
在catalina.xxx-xx-xx.log中可以看到如下内容:
...
Dec 29, 2009 10:36:20 AM org.apache.catalina.users.MemoryUserDatabase save
SEVERE: User database has been configured to be read only. Changes cannot be saved
Dec 29, 2009 10:40:59 AM org.apache.catalina.core.StandardServer storeConfig
SEVERE: StoreConfig mbean not registeredCatalina:type=StoreConfig
Dec 29, 2009 10:42:41 AM org.apache.struts.action.RequestProcessor processMapping
...
看来之间是不能完好相容的。