专注于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这种思路。

 

Tomcat 管理监控工具的更多相关文章

  1. 推荐一款功能强大的Tomcat 管理监控工具,可替代Tomcat Manager

    我们在本地启动Tomcat服务器后,用localhost:访问: 再点Manager App,即可进入Tomcat自带的Manager这个应用,此处可以单独部署/卸载每一个应用.可以看到在Manage ...

  2. 强烈推荐一款功能强大的Tomcat 管理监控工具

    专注于Java领域优质技术号,欢迎关注 原创: 侯树成 Tomcat那些事儿 启动 Tomcat完毕 ,有些时候总会打开浏览器 http://localhost:8080/ 去验证你的Tomcat是否 ...

  3. tomcat管理监控工具:probe(可代替Tomcat Manager)

    版本信息:tomcat8减压版.probe 3.0.0 修改tomcat用户配置,在conf\tomcat-users.xml加入一下配置: <role rolename="admin ...

  4. tomcat管理端的页面安全措施

    由于公司的项目并未启用nginx负载均衡,所以自然也没用到tomcat与web应用一对一的安全操作,经常会遇到 重启单个应用又不想重启tomcat的情况.同时,又出于安全考虑,将tomcat的默认管理 ...

  5. Tomcat 管理页面

    一.配置刚下载的解压版的apache-tomcat,启动后,通过浏览器访问:http://127.0.0.1:8080/(或者http://localhost:8080)然后点击下图的Server s ...

  6. javaweb学习总结十八(软件密码学、配置tomcat的https连接器以及tomcat管理平台)

    一:软件密码学 1:对称加密 对称加密是最快速.最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key).对称加密有很多种算法,由于它效 ...

  7. tomcat 管理端 安全措施

    由于公司的项目并未启用nginx负载均衡,所以自然也没用到tomcat与web应用一对一的安全操作,经常会遇到 重启单个应用又不想重启tomcat的情况.同时,又出于安全考虑,将tomcat的默认管理 ...

  8. .tomcat 管理 给tomcat设置用户名和密码登录

    如果点击红色框框 出现403以下错误 看这个帖子可以解决 tomcat访问管理页面出现:403 Access Denied 解决方法 tomca管理 测试功能,生产环境不要用. Tomcat管理功能用 ...

  9. Tomcat负载均衡、调优核心应用进阶学习笔记(一):tomcat文件目录、页面、架构组件详解、tomcat运行方式、组件介绍、tomcat管理

    文章目录 tomcat文件目录 bin conf lib logs temp webapps work 页面 架构组件详解 tomcat运行方式 组件介绍 tomcat管理 tomcat文件目录 ➜ ...

随机推荐

  1. Protobuf的上手使用

    这里不赘述Json和Protobuf的比较和区别,只谈谈简单的使用 1.在Client-Server交互的过程中,都是以二进制数据传输,所以Json和Protobuf在使用的过程中,都存在序列化和反序 ...

  2. 大数据的前世今生【Hadoop、Spark】

      一.大数据简介 大数据是一个很热门的话题,但它是什么时候开始兴起的呢? 大数据[big data]这个词最早在UNIX用户协会的会议上被使用,来自SGI公司的科学家在其文章“大数据与下一代基础架构 ...

  3. MongoDB 3.6.1集群部署

    Mongodb安装 Linux版本:CentOS release 6.9 Mongodb版本:mongodb-linux-x86_64-3.6.1.tgz 示例是在一台主机上安装mongodb集群 端 ...

  4. navicat for mysql 链接时报错:1251-Client does not support authentication protocol requested by server

    客户端使用navicat for mysql.本地安装了mysql 8.0.但是在链接的时候提示: 主要原因是mysql服务器要求的认证插件版本与客户端不一致造成的. 打开mysql命令行输入如下命令 ...

  5. xadmin 配置内置User模型

    xadmin 配置内置USER模型 默认展示 在你的User模型对应的app下创建adminx 文件 import xadmin from django.contrib.auth import get ...

  6. suse双网卡绑定

    这里使用两张网卡eth1.eth2进行 编辑/etc/sysconfig/network/ifcfg-bond0文件(此文件没有需要创建) device='bond0' BOOTPROTO='stat ...

  7. k8s 证书之ca-csr.json,ca-config.json

    这是后面生成的所有证书的基础. 但如果是公司内使用,使用基于这些证书生成的ca, 在保证安全性的情况下,可以更方便的部署. ca-csr.json { "CN": "ku ...

  8. python_并发编程——多进程的第二种启动方式

    1.多进程的第二种启动方式 import os from multiprocessing import Process # 创建一个自定义类,继承Process类 class MyProcess(Pr ...

  9. HDU - 6125: Free from square (状压DP+分组背包)

    problem:给定N,K.表示你有数1到N,让你最多选择K个数,问有多少种方案,使得选择的数的乘积无平方因子数.N,K<500: solution:显然可以状压DP做,但是500以内的素数还是 ...

  10. YAML_12 批量创建用户,分别设置用户组

    with_items标准循环 ansible]# vim add.yml --- - hosts: web2   remote_user: root   tasks:     - user:     ...