通过tomcat.mamager页面远程管理tomcat

2023-11-17

通过java访问tomcat的manager来管理。

此方法无法达到重启tomcat的目的,只能重启应用。

先在tomcat中修改tomcat-users.xml

<role rolename="admin"/>
<role rolename="admin-gui"/>
<role rolename="manager"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>


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

在代码中:

public static String manager(String operateURL) {

        StringBuffer dataResult = new StringBuffer();
        URL url = null;
        try {
            url = new URL(operateURL);

            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            
            String username = ***;
            String password = ***;
            
            String configuration = username+":"+password; // manager角色的用户
            String encodedPassword = new BASE64Encoder().encode(configuration.getBytes());
            conn.setRequestProperty("Authorization", "Basic " + encodedPassword);
            
            conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36)"); //防止报403错误。 
            
            int responseCode = conn.getResponseCode();
            if (responseCode == 200) {
            	InputStream is = conn.getInputStream();
                BufferedReader bufreader = new BufferedReader(new InputStreamReader(is));
                String line = null;
                while ((line = bufreader.readLine()) != null) {
                    dataResult.append(line);
                }
            } else {
            	System.out.println("返回CODE:" + responseCode);
            }
            
            
        } catch (Exception e) {
            e.printStackTrace();
        }
        
        return dataResult.toString();
    }
/**
     * 获取tomcat正在运行的webApp的参数
     *
     * @return
     */
    public List<WebAppDto> getTomcatWebAppData(String port) {
        List<WebAppDto> webAppArrayList = new ArrayList<WebAppDto>();
        String data = TomcatUtils.manager("http://localhost:" + port + "/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:名称
                WebAppDto webApp = new WebAppDto();
                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 port) {
        String data = TomcatUtils.manager("http://localhost:" + port + "/manager/text/reload?path=/" + webAppName);
        if (data.startsWith("OK")) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 停止项目
     *
     * @param webAppName
     * @return
     */
    public boolean stopWebApp(String webAppName, String port) {
        String data = TomcatUtils.manager("http://192.168.0.11:" + port + "/manager/text/stop?path=/" + webAppName);
        if (data.startsWith("OK")) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 启动项目
     *
     * @param webAppName
     * @return
     */
    public boolean startWebApp(String webAppName, String port) {
        String data = TomcatUtils.manager("http://192.168.0.11:" + port + "/manager/text/start?path=/" + webAppName);
        if (data.startsWith("OK")) {
            return true;
        } else {
            return false;
        }
    }






本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过tomcat.mamager页面远程管理tomcat 的相关文章

随机推荐

  • .NET发送请求(get/post/http/https),携带json数据,接收json数据

    C 发送https请求有一点要注意 ServicePointManager ServerCertificateValidationCallback new RemoteCertificateValidationCallback CheckV
  • C++面向对象特性之继承

    一 继承的概念 继承是一种机制 目的是实现代码复用的同时减少重复代码量 它允许程序员在保持原有类特性的基础上进行功能的拓展 这样产生的新类叫做派生类 被继承的类叫做基类 下面可以看一个实例 class Animal int age clas
  • 遇见未来

    互联网及其延伸 正在导向我们走向一个新的时代 软件技术在新一轮革命技术中毫无疑问是核心竞争力之一 C 语言发明人Biarne Stroustrup说 人类文明运行在软件之上 也突出了软件技术的重要地位 什么是软件定义 软件定义在企业的数据中
  • 利用ESP定律的upx脱壳实践

    背景 除了命令行upx d脱壳 还有手动脱壳 ESP定律的本质是堆栈平衡 又称堆栈平衡定律 是应用频率最高的脱壳方法之一 脱壳的目的就是找到真正的OEP 源文件的EP代码 方法 从pushad到popad是一段解压缩代码 解压UPX壳 这段
  • C++数组越界访问测试

    对int nums 10 进行数组越界测试 文件test cpp 第一次测试 include
  • MySQL实战45讲

    目录 前言 一 连接器 查询缓存 分析器 词法分析 语法分析 优化器 执行器 二 redo log bin log 三 读未提交 read uncommitted 读提交 read committed 可重复读 repeatable rea
  • linux 报错:telnet Connection closed by foreign host

    0 美图 1 背景 链接kudu 报错 telnet samba xx com 7051 Trying 172 xx1 xx 33 Connected to samba example com Escape character is Con
  • java 本地图片压缩 转base64并限制文件大小

    本地图片转base64并限制文件大小 param imagePath 图片全路径 param sizeLimit 大小 整数 限制的大小 KB 1024 return 返回值为0 imageurl为空 返回值为1 imageurl路径不可访
  • 如何更改鼠标右键菜单(转载)

    复制下面的信息到记事本中 然后另存为 reg格式的文件 Windows Registry Editor Version 5 00 HKEY CLASSES ROOT doc Word Document 8 Content Type appl
  • React技巧1(状态组件与无状态组件的使用)

    本教程总共5篇 每日更新一篇 请关注我们 你可以进入历史消息查看以往文章 也敬请期待我们的新文章 1 React 技巧1 状态组件与无状态组件的使用 2018 01 04 2 React 技巧2 避免无意义的父节点 2018 01 05 3
  • Qt4软键盘源码分享

    简述 基于Qt4的软键盘 支持中文 字母 数字 特殊字符输入 开发环境为qt4 8 7 msvc2008 提供了 软键盘动态库源码 和相应的 demo源码 自己编译时记得修改代码中qss 中文字库的路径 源码路径 https downloa
  • IDEA(最新版)导入Myeclipse/eclipse的web项目并运行(全) Windows或者Mac系统

    一 前言 最近在做毕业设计 没想到现在的大学中还是使用的Myeclipse比较多 这个工具逐渐被IDEA工具所代替 因为IDEA的性能和使用更加优秀 或者我们在工作中遇到Myeclipse项目导入IDEA中的情形 怎么将Myeclipse开
  • 西瓜小说(安卓)

    软件名叫西瓜阅读 是吾爱上的大佬根据开源阅读APP魔改之后的版本 内置了超多书源 大家下载安装直接使用 无需再进行任何其他额外的一些操作或者设置 作者魔改之后还给软件添加了推荐 榜单 书架之类的一些很不错的界面 大家都知道 阅读APP最大的
  • SpringCluod深入教程

    1 Nacos配置管理 Nacos除了可以做注册中心 同样可以做配置管理来使用 1 1 统一配置管理 当微服务部署的实例越来越多 达到数十 数百时 逐个修改微服务配置就会让人抓狂 而且很容易出错 我们需要一种统一配置管理方案 可以集中管理所
  • DeFi终极指南【以太坊去中心化金融】

    DeFi De centralized Fi nance 即去中心化金融 是2019年区块链应用发展最迅猛的一个领域 在以太坊区块链上那些最成功的DApp 例如MakerDAO DAI Compound 0x以及下面我们要介绍的那些 其目标
  • 关于matlab中矩阵取值的方法

    在matlab中 取出矩阵中某一个值的方法如下 1 对于二维数组 a i j 表示取出二维数组a的第 i 行 第 j 列的数据 a j 表示取出二维数组a的第 j 列的所有数据 a i 表示取出二维数组a的第 i 行的所有数据 2 多维数组
  • Aviator 表达式的使用

    1 使用Aviator 需要导入包
  • 计算机视觉人体骨骼点动作识别-1.训练自己的关键点检测模型

    人体关键点检测算法 关键点并不特指人体骨骼关键点 还有人脸关键点 物体的关键点 其中人体的关键点 也叫作pose Estimation 是最热门 也是最有难度 应用最广的 应用可以包括 行为识别 人机交互 智能家居 虚拟现实 具体细分下来可
  • USB之基础知识

    1 USB概述 USB Universal Serial Bus 通用串行总线 是一个外部总线标准 用于规范电脑与外部设备的连接和通讯 USB接口支持设备的即插即用和热插拔功能 USB接口有4个pin脚 分别为VCC GND Data Da
  • 通过tomcat.mamager页面远程管理tomcat

    通过java访问tomcat的manager来管理 此方法无法达到重启tomcat的目的 只能重启应用 先在tomcat中修改tomcat users xml