介绍
之前在邮政实习时,leader让我阅读tomcat的源代码,尝试自己实现远程部署项目的功能,于是便有了这此实践。
在Tomact中有一个Manager应用程序,它是用来管理已经部署的web应用程序,在这个应用程序中,ManagerServlet是他的主servlet,通过它我们可以获取tomcat的部分指标,远程管理web应用程序,不过这个功能会受到web应用程序部署中安全约束的保护。
当你请求ManagerServlet时,它会检查getPathInfo()返回的值以及相关的查询参数,以确定被请求的操作。它支持以下操作和参数(从servlet路径开始):
| 请求路径 | 描述 |
|---|---|
| /deploy?config={config-url} | 根据指定的path部署并启动一个新的web应用程序(详见源码) |
| /deploy?config={config-url}&war={war-url}/ | 根据指定的pat部署并启动一个新的web应用程序(详见源码) |
| /deploy?path=/xxx&war={war-url} | 根据指定的path部署并启动一个新的web应用程序(详见源码) |
| /list | 列出所有web应用程序的上下文路径。格式为path:status:sessions(活动会话数) |
| /reload?path=/xxx | 根据指定path重新加载web应用 |
| /resources?type=xxxx | 枚举可用的全局JNDI资源,可以限制指定的java类名 |
| /serverinfo | 显示系统信息和JVM信息 |
| /sessions | |
| /expire?path=/xxx | 列出path路径下的web应用的session空闲时间信息 |
| /expire?path=/xxx&idle=mm | Expire sessions for the context path /xxx which were idle for at least mm minutes. |
| /sslConnectorCiphers | 显示当前connector配置的SSL/TLS密码的诊断信息 |
| /start?path=/xx | 根据指定path启动web应用程序 |
| /stop?path=/xxx | 根据指定path关闭web应用程序 |
| /threaddump | Write a JVM thread dump |
| /undeploy?path=/xxx | 关闭并删除指定path的Web应用程序,然后删除底层WAR文件或文档基目录。 |
我们可以通过ManagerServlet中getPathInfo()提供的操作,将自己的项目远程部署到服务器上,下面将贴出我的实践代码,在实践它之前你只需要引入httpclient包和commons包。
封装统一的远程请求管理类









