如何深入分析Tomcat的Manager

技术如何深入分析Tomcat的Manager如何深入分析Tomcat的Manager,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。关心Tom

如何深入分析Tomcat的Manager,很多新手都不是很清楚。为了帮助大家解决这个问题,下面小编就为大家详细讲解一下。需要的人可以从中学习,希望你能有所收获。

关心Tomcat并且使用过Tomcat的朋友一定使用过它的管理应用,也就是webapps目录中的manager。

Tomcat默认启动后,Tomcat7.0之前的版本可以通过点击Tomcat中ROOT应用主界面左侧链接进入管理器应用。在Tomcat 7.0之后,界面变成了下面这个样子。您可以通过单击管理应用程序来访问管理应用程序。

无论是哪个版本,使用manager应用程序都有一个先决条件:

用户名密码是必需的。

因为manager app设置了BASIC的登录验证方式,所以在使用之前需要配置conf/tomcat-users.xml文件。

其中,添加:

user username="tomcat" password="tomcat" roles="tomcat,manager-gui"/

其中,用户名和密码可以随意更改。角色用于设置用户属于哪个角色。如果您想使用manager应用程序,您需要赋予它manager-gui.的角色

为什么是这个角色?

看这里:

它位于web apps/manager/web-INF/web . XML文件中,定义如下:

!-定义此应用程序的登录配置-

登录配置

验证方法基本/验证方法

领域名称猫管理器应用程序/领域名称

/log in-配置

!-此网络应用程序引用的安全角色-

安全角色

角色名称管理器-GUI/角色名称

/security-role意味着我们上面提到的验证方法是BASIC,具体的角色定义是manager-gui。

tomcat-users.xml,配置用户和角色后,您可以使用它们来管理Tomcat。

进入管理应用程序,应用程序列表就在眼前。

可以控制应用程序的启动、停止、重新加载和卸载。会话可以无效等等。

我们在能和Tomcat开发者学到的一个好的实践,

默认情况下,不允许使用可用于操作已部署应用生命周期管理级别的应用,只能由已配置的用户使用,从而避免一些在线应用被黑客攻击。我们可以想象,如果默认可以随便使用,那么如果这个配置不改变,情况就不容乐观了。

在列表块下,有用于应用程序部署的模块。

这里支持两种形式的部署。

使用配置文件直接部署

选择特定的WAR文件进行部署。

接下来是系统分析界面和获取服务器信息的界面。

让我们选择另一个源代码并分析管理器应用程序。

manager应用程序的源代码位于Tomcat源代码的org.apache.catalina.manager的包下。

主类是ManagerServlet。以所有部署的应用程序为例,让我们看看具体的实现。

由于默认输出是html格式的内容,因此最终指向的类是HTMLManagerServlet,它是ManagerServet的子类。

其中,输出应用列表的代码如下:

//应用程序行部分

//根据上下文名称创建已部署应用程序的排序映射。

Container children[] = host.findChildren();

字符串上下文名称[]=新字符串[children . length];

for(int I=0;一、儿童。(一)

contextNames[i] = children[i].getName();

arrays . sort(context name);

对于(字符串上下文名称:上下文名称){ 0

Context ctxt = (Context) host.findChild(contextName);

if (ctxt!=null){ 0

//Bugzilla 34818,交替行颜色

string context path=ctxt . getpath();

字符串显示路径=上下文路径;

if(display path . equals(“”){)

display path='/';

} }}

注意几行标有红色的代码。管理应用程序通过主机组件获取组件下的所有应用程序信息。首先,它获取所有应用程序的名称,然后通过名称获取相应的特定信息,并将其作为HTML内容输出。

从上面的代码中,我们可以从Tomcat开发人员那里学到一个很好的做法,那就是通过匹配BUG修改对应的标签和代码,更方便别人维护系统。

部署应用程序时,首先需要检查应用程序的前缀(ContextRoot)是否已经存在,因为不允许应用程序有重复的名称。这个名字检测是由JMX实施的。

代码如下:

/**

*在部署者上调用isDeployed方法。

*/

受保护的布尔值是替换(字符串名称)

引发异常{

string[]params={ name };

String[]签名={ ' Java . lang . string ' };

布尔结果=

(布尔值)mBeanServer.invoke(oname,' isDeployed ',params,signature);

返回result . booleanVaLue();

}阅读以上内容对你有帮助吗?如果您想了解更多相关知识或阅读更多相关文章,请关注行业资讯频道,感谢您的支持。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/138395.html

(0)

相关推荐

  • 女娲补天翻译,怎样正确理解“万恶淫为首”

    技术女娲补天翻译,怎样正确理解“万恶淫为首”真人真事女娲补天翻译,巳经过去了六年了!农村有买新娘现象,这就是真事,男的巳经三十多岁了,家里正为他 筹备婚事,女是越南妹,由于身份问题,不能 正式登记结婚,农村也我直接摆酒请

    生活 2021年10月22日
  • Java中类和对象的示例分析

    技术Java中类和对象的示例分析这篇文章主要介绍了Java中类和对象的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。类可以看成是创建Java对象的

    攻略 2021年11月13日
  • 什么是python尾递归

    技术什么是python尾递归本篇内容主要讲解“什么是python尾递归”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“什么是python尾递归”吧!递归是啥?递归函数大家肯定写

    攻略 2021年11月2日
  • vx works获取时间(vxworks中的任务是干嘛的)

    技术vxworks中Event是什么小编给大家分享一下vxworks中Event是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Event

    攻略 2021年12月22日
  • 二阶段提交在MySQL中的广义应用是怎样的

    技术二阶段提交在MySQL中的广义应用是怎样的本篇文章给大家分享的是有关二阶段提交在MySQL中的广义应用是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看

    攻略 2021年10月25日
  • cacheable注解(cacheable注解不生效)

    技术@CacheEvict注解失效的经历及解决方法是什么@CacheEvict注解失效的经历及解决方法是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望

    攻略 2021年12月25日