通过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;
}
}