最近忙着毕业答辩,填写材料,好多事情都给耽搁了!一个月都没有继续翻译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