强烈推荐一款功能强大的Tomcat 管理监控工具
专注于Java领域优质技术号,欢迎关注
原创: 侯树成 Tomcat那些事儿
启动 Tomcat完毕 ,有些时候总会打开浏览器 http://localhost:8080/
去验证你的Tomcat是否启动成功,看到ROOT应用里那个黄黄的三条腿的猫,你就放心了:服务启动没问题。如果请求不成功,那一定是哪里出了问题,启动异常才导致这个默认自带的app没有启动成功。从而进一步看log分析。
除了ROOT应用外,Tomcat还默认提供了 Manager这个应用。
在功能上 Manager 可以
1. 部署
管理已部署的应用(启、停应用,重部署)
部署war
通过context.xml形式部署
设置Session过期
2. 诊断内存泄露等
3. 显示 JVM 内存信息
4. Connector 线程的状态
还有什么呢?
我们看到, Tomcat 的这个Manager提供的,是比较常用,但很有限的几个基础功能。
使用过 比如 Weblogic, WebSphere, 开源的 GlassFish 等J2EE 应用服务器的朋友会发现,与Tomcat 的Manager 相比, 他们都提供了一个功能更完备的所谓的「管理控制台」。
这个管理控制台,可以做的事情,比上面 Manager 提供的就丰富多了。比如最常用的一个: 8080 这个端口不够用,我们想再加一个端口响应其他的请求,或者在配置ajp请求处理时,我们想加一个 Connector ,这个时候在 J2EE的管理控制台里,直接操作添加即可,一步步来。
甚至应用部署的时候,可以选择JSP的预编译(JSP预编译,加速你的应用),创建数据源等等。
在 Tomcat 里对于创建 Connector 这个操作,你需要怎么做?
打开server.xml, 把 8080这个配置拷一份,改改端口,改改BIO/NIO的处理,重启Tomcat。(敲黑板,这里是考点哦),而管理控制台一类的处理时不需要重启实例的。实质上Connector 做为一个组件与 Container 是不互相影响的,其实 Tomcat 也能做到不需要重启,只是这个创建 Connector 的过程,需要我们以编程的方式,来对配置文件的内容进行Marshaller/Unmarshaller。直接操作Container的内容,也可以通过JMX 来实现。
你说你部署了一个应用,该应用里配置了哪些Servlet、哪些Listener? Web.xml里有没有init-param,去哪能看看么?
不好意思,需要自己打开应用配置来看。
管理控制台的思路,一般会将当前应用具体的配置信息列出来,方便管理。
当然,区别还有很多...
其实,在Tomcat 6之前,也是有这样一款名为「Tomcat Admin」的应用,功能可以媲美应用服务器的管理控制台,不过后来不再提供了。可惜呀。
当然说了这么多,我们并不是开始嫌弃 Tomcat了。毕竟做为一个纯的Web Container,而且是非商业产品,也算不错了。
为了能使用一个较好用,功能也较全面的 Tomcat 管理工具,官方不提供我们只能把目光投向巨大的第三方开源之海,埋头苦找么?
官方的wiki里也我们指了条路:
PSI Probe is advanced manager andmonitor web application for Apache Tomcat.
这是一款 Tomcat 管理和监控工具,前身是 Lambda Probe。由于 Lambda Probe 2006不再更新,所以 PSI Probe 算是对其的一个 Fork 版本并一直更新至今。
使用也很方便,在github(https://github.com/psi-probe/psi-probe) 下载对应的war文件,部署即可。
访问的时候,和 Manager 一样,也是需要使用配置在 tomcat-users.xml 中的用户来访问。
登录后是这个样子:
通过上面一长串的tab,就能感受到功能上要比 Manager应用要强大吧。甚至部分功能能追平「管理控制台」的体验了。
来看应用部署这一块
除了部署这个功能外,还包含一般J2EE的应用服务器包含的功能「JSP预编译」来加速应用的响应。还有清空work的选项。
直接页面看日志
对于日志文件,可以实时修改不同的日志级别,来打印日志。
可以将当前配置的 Connector列出来,各个 Connector 收到的请求等
更多的功能,下载下来探索吧! Have fun!
PSI背后是如何实现的功能呢?
我们之前的文章写过,在 Tomcat 内存在一种「特权应用」是可以直接访问Tomcat的一些内部组件的,PSI就是把自己设置成一个特权应用,同时对于Tomcat内的操作, PSI是通过 Wrapper的形式,对不同版本的Tomcat 创建了一个Adapter
这里的 Wrapper,就是我们熟悉的Tomcat组件的那个Wrapper,PSI继承了 Spring 的DispatherServlet,通过Servlet这个Wrapper之后,再拿到其上层组件 Context、Host、Engine。
/** * Main dispatcher servlet. Spring default dispatcher servlet had to be superseded to handle * "privileged" application context features. The actual requirement is to capture passed Wrapper * instance into ContainerWrapperBean. Wrapper instance is our gateway to Tomcat. */@WebServletpublic class ProbeServlet extends DispatcherServlet implements ContainerServlet {
在Spring 的Initializer里将Servlet注册上去
// Set probe servletServletRegistration.Dynamic probe = servletContext.addServlet("probe", ProbeServlet.class);
所以拿到了这些组件,在操作应用的部署,获取Connector等内容时,其实就和 Tomcat 自己一样了。
所以如果要开发管理工具,这也是一种实现思路。
一种通过JMX 的MBean。
一种是通过PSI这种思路。
本文链接:https://blog.csdn.net/weixin_34364071/article/details/86753232
强烈推荐一款功能强大的Tomcat 管理监控工具的更多相关文章
- 推荐一款功能强大的Tomcat 管理监控工具,可替代Tomcat Manager
我们在本地启动Tomcat服务器后,用localhost:访问: 再点Manager App,即可进入Tomcat自带的Manager这个应用,此处可以单独部署/卸载每一个应用.可以看到在Manage ...
- 推荐一款功能强大的js 在线编辑器
http://jszi.cn/public/oherub/11/edit
- [推荐] kylinPET是一款功能强大的性能测试工具
[推荐] kylinPET是一款功能强大的性能测试工具 官方网站: http://www.kylinpet.com/
- 一款功能强大的iphone购物应用源码
一款功能强大的iphone购物应用源码,这款应用源码比较完整的,并且还支持信用卡支付服务等功能的,基本实现了我们常用的购物应用功能了,实现商品的基本展示功能,还具有完整的用户管理,以及完整的购物流程等 ...
- Fibratus:一款功能强大的Windows内核漏洞利用和跟踪工具
今天给大家介绍的是一款名叫Fibratus的开源工具,广大研究人员可以使用这款功能强大的工具来进行Windows内核漏洞利用.挖掘与跟踪. Fibratus这款工具能够捕捉到绝大多数的Windows内 ...
- Lingoes 一款功能强大、简明易用的多语言词典和文本翻译软件
Lingoes 软件自述 Lingoes 是一款功能强大.简明易用的多语言词典和文本翻译软件,支持多达80种语言互查互译,这些语言包括 英.法.德.意.俄.中.日.韩.西.葡.阿拉伯语 及更多... ...
- Enumy:一款功能强大的Linux后渗透提权枚举工具
Enumy是一款功能强大的Linux后渗透提权枚举工具,该工具是一个速度非常快的可移植可执行文件,广大研究人员可以在针对Linux设备的渗透测试以及CTF的后渗透阶段利用该工具实现权限提升,而Enum ...
- 高效、易用、功能强大的 api 管理平台
前言导读 实际环境的需求可以说是:只有你没想到,没有实现不了的,征对于目前实际开发.测试.生产等环境中,需要用到各类的接口可达几十.甚至上百个,因此,必须需要一个统一管理的工具平台来统一管理这类接口, ...
- 三款功能强大代码比较工具Beyond compare、DiffMerge、WinMerge
我们经常会遇到需要比较同一文件的不同版本,特别是代码文件.如果人工去对比查看,势必费时实力还会出现纰漏和错误,因此我们需要借助一些代码比较的工具来自动完成这些工作.这里介绍3款比较流行且功能强大的工具 ...
随机推荐
- JavaScript深入之变量对象(转载)
前言 在上篇<JavaScript深入之执行上下文栈>中讲到,当 JavaScript 代码执行一段可执行代码(executable code)时,会创建对应的执行上下文(executio ...
- Cheatsheet: 2019 03.01 ~ 04.30
Golang How To Install Go and Set Up a Local Programming Environment on macOS Build A Go API 40+ prac ...
- maven私服nexus3.9安装配置
maven私服nexus3.9安装配置 私服介绍 私服是指私有服务器,是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构建.有了私服之后,当 Maven 需要下载构件时,直接请求私服 ...
- Shell04--循环语句
目录 Shell04---循环语句 1. 循环语句for基本概述 2. 循环语句for场景示例 3. 循环语句while基本概述 4. 循环语句while场景示例 5. 内置跳出循环语句指令 Shel ...
- Linux命令(干货)
@ vim 编辑快捷键 ctrl + n 是自动补齐 ctrl + p 是往上选择 ctrl + f 是下一屏幕 ctrl + b 是上一屏幕 w:是移动一个单词 b:是向前一个单词 d^:当前行中, ...
- Linux防火墙--iptables--白名单配置
1.服务器22端口和1521端口开通给指定IP [root@node2 sysconfig]# iptables -t filter -nL INPUT Chain INPUT (policy ACC ...
- Go's Declaration Syntax
Introduction Newcomers to Go wonder why the declaration syntax is different from the tradition estab ...
- 《深入学习Redis(1):Redis内存模型 》笔记,待完善
参考资料 https://www.cnblogs.com/kismetv/p/8654978.html 一.内存统计 info memory 查看内存统计 五.应用举例
- $Dsu$ $on$ $Tree$ 复习
\(Dsu\) \(on\) \(Tree\) 复习 发现最近有点头晕,突然这东西就不会了,头疼了很久,决定写一份记录啊. 大致认识 适用范围一般在处理树上子树统计问题,不支持在线回答询问以及修改. ...
- HashMap、HashTable、ConcurrentHashMap区别
HashMap与HashTable区别 HashMap与ConcurrentHashMap区别 1.HashMap与HashTable的区别 HashMap线程不安全,HashTable线程安全 Ha ...