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,完成收工,其实是很简单的。
java程序监控tomcat中部署的项目的状态以及控制某些项目的启动停止的更多相关文章
- 【JVM】linux上tomcat中部署的web服务,时好时坏,莫名其妙宕机,报错:There is insufficient memory for the Java Runtime Environment to continue.
=========================================================================================== 环境: linu ...
- 【转】Tomcat中部署java web应用程序
http://www.blogjava.net/jiafang83/archive/2009/06/02/279644.html 转载:今天给大家介绍怎样在Tomcat5.5.9中部署Java Web ...
- 在Tomcat中部署Java Web应用程序
在Tomcat中部署Java Web应用程序有两种方式:静态部署和动态部署.在下文中$CATALINA_HOME指的是Tomcat根目录. 一.静态部署 静态部署指的是我们在服务器启动之前部 ...
- Java Web开发: Tomcat中部署项目的三种方法
web开发,在tomcat中部署项目的方法: 可以参考http://m.blog.csdn.net/blog/u012516903/15741727 定义$CATALINA_HOME指的是Tomcat ...
- Tomcat中部署Java Web应用程序的方式
Tomcat中部署Java Web应用程序的几种方式: #PetWeb是工程名 1.在TOMCAT_HOME\conf\server.xml文件的HOST节点中加入 <Context docBa ...
- 在Tomcat中部署Java Web应用程序几种方式
在Tomcat中部署Java Web应用程序有两种方式:静态部署和动态部署.在下文中$CATALINA_HOME指的是Tomcat根目录. 一.静态部署 静态部署指的是我们在服务器启动之前部 ...
- Intellij IDEA 创建Web项目并在Tomcat中部署运行(不使用maven)【转载】
原文链接:http://www.thinksaas.cn/topics/0/350/350000.html 一.创建Web项目 1.File -> New Module,进入创建项目窗口 2.选 ...
- Intellij IDEA 创建Web项目并在Tomcat中部署运行
一.创建Web项目 1.File -> New Module,进入创建项目窗口 2.选择Java类型,在 Module name 处输入项目名,点击Next 3.勾选 Web Applica ...
- 在Tomcat中部署Web项目的操作方法,maven项目在Tomcat里登录首页报404
maven项目在Tomcat里登录首页报404, 解决:编辑conf/server.xml进行配置<Host>里的<Context>标签里的path. <Context ...
随机推荐
- mysql5.6版本修改密码
UPDATE user SET Password=PASSWORD('新密码') WHERE User='root';
- 201621123033 《Java程序设计》第10周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 1. 常用异常 结合题集题目7-1回答 1.1 自己以前编写的代码中经常出现 ...
- 【bzoj2097】[Usaco2010 Dec]Exercise 奶牛健美操 二分+贪心
题目描述 Farmer John为了保持奶牛们的健康,让可怜的奶牛们不停在牧场之间 的小路上奔跑.这些奶牛的路径集合可以被表示成一个点集和一些连接 两个顶点的双向路,使得每对点之间恰好有一条简单路径. ...
- 【HDU 1358 Period】
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- 《c程序设计语言》读书笔记-3.6-数字转字符串最小宽度限制
#include <io.h> #include <stdio.h> #include <string.h> #include <stdlib.h> # ...
- mac平台打造犀利的Android Studio开发环境
0x0 背景介绍 随着Android Studio功能越来越强大,Android平台的开发者们基本上都从原来的Eclipse + ADT 转到了AS上.本文就记录自己在配置AS环境过程中遇到的各种问 ...
- 使用fdisk命令对linux硬盘进行操作
fdisk是linux自带的硬盘分区工具,可以对硬盘进行分区,或者对硬盘分区进行调整.本次试验环境请参考[Linux磁盘系统基础知识] 首先选择要进行操作的磁盘 [root@a ~]# fdisk / ...
- 母函数(Generation Function) 入门 + 模板
转自:母函数 入门 + 模板 感谢 在数学中,某个序列的母函数(Generating function,又称生成函数)是一种形式幂级数,其每一项的系数可以提供关于这个序列的信息.使用母函数解决问题的 ...
- 【Tomcat】一台电脑上运行多个tomcat
效果: 1.首先需要安装Tomcat7,Tomcat8. Tomcat7: Tomcat8: 2.添加两个环境变量,添加CATALINA_HOME1和CATALINA_BASE1指向E:\tomcat ...
- 高级全局API钩取 - IE连接控制
@author: dlive @date: 2017/02/14 0x01 调试IE进程 常见网络连接库:ws2_32.dll(套接字),wininet.dll,winhttp.dll 使用Proce ...