java程序監控tomcat中部署的項目的狀態以及控制某些項目的啟動停止


原文:http://blog.csdn.net/liuyuqin1991/article/details/49280777

 

步驟如下: 
①:首先授權用戶使獲得這些權限 
You can find the role names in the web.xml file of the Manager web application. The available roles are:

manager-gui — Access to the HTML interface. 
manager-status — Access to the “Server Status” page only. 
manager-script — Access to the tools-friendly plain text interface that is described in this document, and to the “Server Status” page. 
manager-jmx — Access to JMX proxy interface and to the “Server Status” page.

具體方法:修改/conf目錄下的tomcat-users.xml文件,添加如下代碼:

<role rolename="manager-status"/>
<role rolename="manager"/>  
<role rolename="manager-jmx"/> 
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="admin"/>
<user username="admin" password="123456" roles="manager,manager-gui,admin,manager-status,manager-jmx,manager-script"/>

這里創建一個admin 密碼為123456的用戶

②:創建通用tomcatUtil方法:

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();
            //這里我是把admin,123456 這個用戶信息放到了一個json文件中以json形式存放,然后取出來,如果不是以這種方式存放,則可以直接設置username = admin ,password =123456
            String data = FileUtil.readJson();

            String username = data.substring(1,data.length()-1).split(",")[0].split(":")[1].substring
                    (1,data.substring(1,data.length()-1).split(",")[0].split(":")[1].length()-1);
            String password =data.substring(1,data.length()-1).split(",")[1].split(":")[1].substring
                    (1,data.substring(1,data.length()-1).split(",")[0].split(":")[1].length());

            String configuration = username+":"+password; // manager角色的用戶
            String encodedPassword = new BASE64Encoder().encode(configuration.getBytes());
            conn.setRequestProperty("Authorization", "Basic " + encodedPassword);
            // URL授權訪問 -- End

            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 ArrayList<WebApp> getTomcatWebAppData(){

        ArrayList<WebApp> webAppArrayList = new ArrayList<WebApp>();

        String data = TomcatHTMLUtil.message("http://localhost:8080/manager/text/list");

        String[] oldDataStrs = data.split("/");

        if(oldDataStrs[0].startsWith("OK")){
            for (int i = 0; i < oldDataStrs.length; i++) {
                String name = oldDataStrs[i].split(":")[0];
                if(name.startsWith("legacy-proxy")){
                    WebApp webApp = new WebApp();
                    webApp.setName(name);
                    if(oldDataStrs[i].split(":")[1].equals("running")){
                        if(oldDataStrs[i].split(":")[2].equals("0")){
                            webApp.setStatus("運行");
                        }
                        else{
                            webApp.setStatus("異常");
                        }
                    }
                    else if(oldDataStrs[i].split(":")[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:8080/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:8080/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:8080/manager/text/start?path=/"+webAppName);
        if(data.startsWith("OK")){
            return true;
        }
        else {
            return false;
        }
    }

webApp的domain對象:

package domain;

/**
 * Created by Administrator on 2015/10/20.
 * webApp的相關信息
 */

public class WebApp {

    /**
     * 項目名稱
     */
    private String name;

    /**
     * 運行狀態 "成功" or "停止"
     */
    private String 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;
    }
}

基本上核心功能已經出來了,剩下的就是寫桌面swing程序了,我就不貼代碼了 
OK,完成收工,其實是很簡單的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM