国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

java 如何遠程控制tomcat啟動關機

瀏覽:60日期:2022-08-14 10:57:40

最近我在考慮如何遠程控制tomcat的啟動和關機,最后是有友好的界面,能夠實現一鍵式操作的,這樣會肯定是會很方便的,網上找了半天,沒找到,有說使用sheel腳本的,有在tomcat服務器上面安裝個客戶端的,這些都不是我所需要的,后來不經意在網上找到一篇文章稍微講述了下,但是他寫的不完整,一些關鍵的地方沒提到,還有一些地方寫錯了,我重新整理了下,在這里分享給大家。

首先,我下載了一個嶄新的tomcat,我選擇的是7版本的。

解壓后的界面如下圖所示:

java 如何遠程控制tomcat啟動關機

這里我們先來說2個需要注意的問題:

1. webapps下面有個文件夾叫**manager**,很多時候我們會把webapps下面的東西都刪了,然后再放我們的工程,其實這個文件夾是用來做tomcat管理的,我們要留著。

2. conf文件夾下面有個文件叫tomcat-users.xml,它是來做tomcat管理的用戶權限的

我們就是利用這兩塊內容來實現對tomcat的遠程控制的。

tomcat提供的manager項目提供了一些api,我們用到的有下面四個:

1. http://localhost:9000/manager/text/list:可以得到此tomcat正在運行的項目以及它們的狀態。

2. http://localhost:9000/manager/text/reload?path=/ROOT:重新部署一個項目ROOT項目

3. http://localhost:9000/manager/text/start?path=/ROOT:啟動ROOT項目

4. http://localhost:9000/manager/text/stop?path=/ROOT:關閉ROOT項目

ROOT是我們控制的項目名稱,你可以根據你實際需要去改為你的項目名。

首先,我們通過http://localhost:9000/manager/text/list得到正在運行的項目列表,得到的結果大概如下:

java 如何遠程控制tomcat啟動關機

我們來分析下這段結果,第一行我們忽略,代表的是tomcat在運行,下面有一些項目在正常運行。

我們來項目看看下面這些,以/examples:running:0:examples為例子,它有三個:號,第一個:前的內容我們忽略,running為正在運行中(若為stopped則代表已經停止),0代表狀態為正常(其他為異常)。

分析好我們就可以用java代碼來操作這些了。

具體代碼如下:

package com.baibin.utils;import sun.misc.BASE64Encoder;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.net.URL;import java.net.URLConnection;import java.util.ArrayList;import java.util.List;public class TomcatHTMLUtil { public static String message(String operateURL) {StringBuffer dataResult = new StringBuffer();URL url = null;try { url = new URL(operateURL); URLConnection conn = (URLConnection) url.openConnection(); /** * 這里的用戶名和密碼是由tomcat的%tomcat_home%/conf/tomcat-users.xml里所配置的用戶 */ String username = 'tomcat'; String password = 'tomcat'; String configuration = username + ':' + password; // manager角色的用戶 String encodedPassword = new BASE64Encoder().encode(configuration.getBytes()); conn.setRequestProperty('Authorization', 'Basic ' + encodedPassword); InputStream is = conn.getInputStream(); BufferedReader bufreader = new BufferedReader(new InputStreamReader(is)); String line = null; while ((line = bufreader.readLine()) != null) {dataResult.append(line); }} catch (Exception e) { e.printStackTrace();}return dataResult.toString(); } /** * 獲取tomcat正在運行的webApp的參數 * * @return */ public List<WebApp> getTomcatWebAppData() {List<WebApp> webAppArrayList = new ArrayList<WebApp>();String data = TomcatHTMLUtil.message('http://localhost:9000/manager/text/list');String[] oldDataStrs = data.split('/');if (oldDataStrs[0].startsWith('OK')) { for (int i = 1; i < oldDataStrs.length; i++) {String[] names = oldDataStrs[i].split(':');//長度為4 0 :忽略 1:狀態 2:0 狀態 3:名稱WebApp webApp = new WebApp();webApp.setName(names[3]);if (names[1].equals('running')) { if (oldDataStrs[i].split(':')[2].equals('0')) {webApp.setStatus('運行'); } else {webApp.setStatus('異常'); }} else if (names[1].equals('stopped')) { if (oldDataStrs[i].split(':')[2].equals('0')) {webApp.setStatus('停止'); } else {webApp.setStatus('異常'); }} else { webApp.setStatus('異常');}webAppArrayList.add(webApp); } //}}return webAppArrayList; } /** * 重新部署一個項目 * * @param webAppName * @return */ public boolean reloadWebApp(String webAppName) {String data = TomcatHTMLUtil.message('http://localhost:9000/manager/text/reload?path=/' + webAppName);if (data.startsWith('OK')) { return true;} else { return false;} } /** * 停止一個項目 * * @param webAppName * @return */ public boolean stopWebApp(String webAppName) {String data = TomcatHTMLUtil.message('http://localhost:9000/manager/text/stop?path=/' + webAppName);if (data.startsWith('OK')) { return true;} else { return false;} } /** * 開始一個項目 * * @param webAppName * @return */ public boolean startWebApp(String webAppName) {String data = TomcatHTMLUtil.message('http://localhost:9000/manager/text/start?path=/' + webAppName);if (data.startsWith('OK')) { return true;} else { return false;} }}package com.baibin.utils;/** * Created by ibm on 2017/3/22. */public class WebApp { /** * 項目名稱 */ private String name; /** * 運行狀態 '成功' or '停止' */ private String status; @Override public String toString() {return 'WebApp{' +'name=’' + name + ’’’ +', status=’' + status + ’’’ +’}’; } public String getName() {return name; } public String getStatus() {return status; } public void setName(String name) {this.name = name; } public void setStatus(String status) {this.status = status; }}調用方式如下:

<body><% TomcatHTMLUtil util = new TomcatHTMLUtil(); /*啟動ROOT項目*/ util.startWebApp('ROOT'); /*關閉ROOT項目*/ util.stopWebApp('ROOT');%></body>

這樣就可以遠程控制了,前臺寫的比較簡單,還可以繼續優化,當然那不是重點,這里就不寫了。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。如有錯誤或未考慮完全的地方,望不吝賜教。

標簽: Java
相關文章:
主站蜘蛛池模板: 免费看a网站| 国产欧美成人免费观看 | 毛片视频网址 | 久久久国产一区二区三区丝袜 | 手机在线播放av | 宅女福利视频在线看免费网站 | 富二代精品视频 | 久久www免费人成看国产片 | 免费黄色毛片视频 | 日本视频播放免费线上观看 | 欧美一级特黄aaaaaa在线看首页 | 一级国产交换配乱淫 | 国产成人亚洲合集青青草原精品 | 成人免费在线观看视频 | 久久国产精品自线拍免费 | 一区二区三区视频 | 免费一级毛片在线播放放视频 | 91视频最新网站 | 奇米四色综合久久天天爱 | a级毛片免费 | 男女视频在线看 | 99热久久国产综合精品久久国产 | 国产精品一级视频 | 成人综合婷婷国产精品久久免费 | 我要看a级毛片 | 美女张开腿让我 | 那里有黄色网址 | 成年女人免费观看 | 中文字幕亚洲综合久久 | 亚洲国产成人在人网站天堂 | 午夜手机看片 | 国产乱码一区二区三区四川人 | 久久爰www免费人成 久久曰视频 | 亚洲第一区香蕉_国产a | 欧美成人片在线 | 免费观看一级一片 | 一级做a级爰片性色毛片视频 | 亚洲视频播放 | 欧美性精品hd在线观看 | 国产成人精品免费视频大全软件 | 国产免费高清在线精品一区 |