最近公司在动态通过Java程序操作Tomcat,Jetty,MySql,VirtualBox调研,我负责的是windows下和linux下动态操作Tomcat,主要包括以下功能点
- 动态开启和关闭Tomcat
- 动态发布应用程序到Tomcat中
- 动态的获得Tomcat目前的堆内存,以及线程数,以及会话数等等信息
- 发布应用程序后动态的返回相关web项目的访问路径
- 动态的对Tomcat进行备份以及对Tomcat中的应用程序进行备份
- 动态的停止和undeplody Tomcat中的程序
- 动态的为每个Tomcat分配内存
1. 第一个比较简单,先动态的复制产生一个新的Tomcat,然后动态的修改CATALINA_HOME,接下来检测端口是否占用,为其动态的分配可用的端口,接下来主要是使用Runtime.getRuntime().exec();
如果是在windows下则执行startup.bat文件和shutdown.bat文件
如果是在linux下则执行startup.bat文件盒shutdown.sh文件,但是需要先修改相应sh文件的执行权限,此时也是通过Runtime.getRuntime().exec(‘chmod -R 755 c startup.sh’);等
2.第二个和第六个主要是通过Tomcat提供的http接口,http://localhost:8080/manage/text/command?path=...这样的接口,tomcat文档上面有详细的描述
3.第三条主要是通过配置Tomcat开启JMX监控,然后再Java程序中使用JMX获得相关内存信息等
4.第四个就是记录Tomcat开启的端口,以及应用程序信息,以及服务器ip,拼接成一个访问地址
5.第五个很简单,就是文件操作
6.第七个windows下主要是修改catalina.bat文件,linux主要是修改catalina.sh文件
以上大致的动态操作Tomcat的实现进行了大体的描述