启动 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这种思路。