91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何深入分析Tomcat的Manager

發布時間:2021-12-08 18:22:23 來源:億速云 閱讀:135 作者:柒染 欄目:大數據

如何深入分析Tomcat的Manager,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

關心Tomcat,使用過Tomcat的朋友,一定使用過它的管理應用,就是webapps目錄下的manager。

默認啟動Tomcat后,Tomcat 7.0之前版本的,通過點擊位于Tomcat的ROOT應用主界面的左側鏈接,可以進入manager應用,Tomcat7.0之后,界面變成了下面的這個樣了。通過點擊Manager App可以訪問manager應用。

無論哪個版本,要使用manager應用有一個前提:

是需要用戶名密碼的。

因為manager app設置了BASIC的登錄驗證方式,所以使用前需要先配置conf/tomcat-users.xml文件。

在其中增加:

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

其中,username和password可以隨意改,那roles中用于設置該用戶屬于哪個角色,如果要使用manager應用,就需要給其賦予manager-gui這個角色。

為什么是這個角色呢?

看這里:

位于webapps/manager/WEB-INF/web.xml文件中,有如下定義:


<!-- Define the Login Configuration for this Application -->
<login-config>
 <auth-method>BASIC</auth-method>
 <realm-name>Tomcat Manager Application</realm-name>
</login-config>
<!-- Security roles referenced by this web application -->
<security-role>
 <role-name>manager-gui</role-name>
</security-role>

就是我們上面提到使用的校驗方式為BASIC,而具體的角色定義是manager-gui。

配置好tomcat-users.xml中的用戶和角色后,就可以使用其管理Tomcat了。

進入manager應用,進入視線的是應用的列表

可以控制應用的啟動停止,重新加載,卸載。可以使Session失效等。

這里我們能和Tomcat開發者學到的一個好的實踐

可以用來操作已部署應用生命周期的管理級別的應用,默認情況下是不允許使用的,只有配置過用戶才能使用,從而避免一些線上的應用被黑。我們可以想像一下,如果默認就可以隨便使用,那如果這個配置沒有更改,情況就不容樂觀了。

在列表塊下,是用于應用部署的模塊


這里支持兩種形式的部署

  • 使用配置文件直接部署

  • 通過選擇具體的WAR文件進行部署

再向下則是系統分析的接口,以及獲取Server信息的接口

我們再摘選一段源碼,分析下manager應用。

manager應用的源碼位于Tomcat源碼的org.apache.catalina.manager包下。

主類為ManagerServlet這個類。以列所有部署的應用為例,我們看下具體實現

由于默認輸出的是html格式的內容,最終定向到的類是HTMLManagerServlet,這是ManagerServet的一個子類。

其中,輸出應用列表的代碼如下:

// Apps Row Section

// Create sorted map of deployed applications by context name.

Container children[] = host.findChildren();

String contextNames[] = new String[children.length];

for (int i = 0; i < children.length; i++)

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

Arrays.sort(contextNames);

for (String contextName : contextNames) {

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

if (ctxt != null) {

// Bugzilla 34818, alternating row colors

String contextPath = ctxt.getPath();

String displayPath = contextPath;

if (displayPath.equals("")) {

displayPath = "/";

} }}

注意標紅的幾行代碼,manager應用是通過Host這個組件,來獲取該組件下所有的應用信息,先獲取所有應用的名稱,再通過名稱,再獲取其對應的具體信息,并將其接成HTML內容輸出。

從上面的代碼,我們可以和Tomcat開發者學到的一個不錯的實踐,是將對應修改BUG的標號和代碼對應起來,在其它人維護系統時,可以更方便。

在部署一個應用時,首先需要檢查下該應用的前綴(ContextRoot)是否已經存在,因為不允許應用存在重名的情況,這個名稱檢測,用的就是JMX的實現

代碼如下:

/**
* Invoke the isDeployed method on the deployer.
*/
protected boolean isDeployed(String name)
   throws Exception {
   String[] params = { name };
   String[] signature = { "java.lang.String" };
   Boolean result =
       (Boolean) mBeanServer.invoke(oname, "isDeployed", params, signature);
   return result.booleanValue();
}

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

专栏| 珠海市| 思茅市| 山东省| 唐山市| 上高县| 宣汉县| 兴义市| 潞西市| 莱州市| 金溪县| 浙江省| 荃湾区| 自贡市| 云霄县| 乐亭县| 沙坪坝区| 泰顺县| 富源县| 湖口县| 新疆| 陕西省| 额济纳旗| 军事| 会昌县| 泸州市| 平乡县| 梁山县| 孝昌县| 惠东县| 宜宾市| 新丰县| 凤冈县| 仪陇县| 扶绥县| 合川市| 布拖县| 尼木县| 甘谷县| 屏东市| 汕头市|