Myeclipse 是如何启动tomcat服务

闲的蛋疼的时候,就写了个批处理脚本自动重启关闭tomcat 服务的脚本,内容如下:

d:
cd work/apache-tomcat-7.0.78/bin

call shutdown.bat

call startup.bat


因为本身tomcat 下边有项目,没想到启动的时候 居然内存溢出了

我又看了下myeclipse 中关于tomcat7 的配置 ,发现,里面加了VM 参数调优的设置 

然后我用JAVA自带的工具jconsole 看了下 VM参数 确认了一下 ,(这个程序不要关闭,后续还有用)


能够看到VM参数里传入的 一些调优的属性信息。

我想,既然myeclipse启动tomcat 的时候传入了调优参数,那么在不修改tomcat 启动程序的前提下,它是如何实现的呢?

从网上了找了一大堆的答案,都是告知如何TOMCAT调优或者JVM调优的,这就不是我想要的答案。

我想要的答案 是 手动实现和myeclipse启动tomcat 一样的效果,既能启动tomcat,又能传入调优参数,还不用改变tomcat 的启动程序,

既然网上找不到答案,索性我就监听mycelipse启动tomcat 的进程

从网上下载ProcessMonitor的软件,打开之后,从mycelipse中启动tomcat,然后用jconsole获取到进程的PID,我本机的是8788,然后设置ProcessMonitor的过滤条件为:

pid is 8788


点击OK,然后过滤得到进程8788的所有信息

这时候我们看到第一行是Process Start 这就是我们要找的信息,双击它,


把Command Line 里的内容复制出来,得到的信息如下:

 "D:\work\java\1_7u17\jdk\bin\javaw.exe" -Dmaven.multiModuleProjectDirectory=$M2_HOME "-Dcatalina.home=D:\work\apache-tomcat-7.0.78" "-Dcatalina.base=D:\work\apache-tomcat-7.0.78" "-Djava.endorsed.dirs=D:\work\apache-tomcat-7.0.78/common/endorsed" "-Djava.io.tmpdir=D:\work\apache-tomcat-7.0.78\temp" "-Djava.library.path=D:\work\java\1_7u17\jdk\bin;D:\work\apache-tomcat-7.0.78\bin" -Dsun.io.useCanonCaches=false -Xms1024m -Xmx1024m -XX:PermSize=256M -XX:MaxNewSize=1024m -XX:MaxPermSize=512m -Djava.awt.headless=true -classpath "D:\work\apache-tomcat-7.0.78/bin/bootstrap.jar;D:\work\apache-tomcat-7.0.78/bin/tomcat-juli.jar;D:\work\java\1_7u17\jdk/lib/tools.jar" org.apache.catalina.startup.Bootstrap start


我们把开头的内容去掉引号,并且 吧javaw.exe改成java.exe,这样文本就会变成如下:

 D:\work\java\1_7u17\jdk\bin\java.exe -Dmaven.multiModuleProjectDirectory=$M2_HOME "-Dcatalina.home=D:\work\apache-tomcat-7.0.78" "-Dcatalina.base=D:\work\apache-tomcat-7.0.78" "-Djava.endorsed.dirs=D:\work\apache-tomcat-7.0.78/common/endorsed" "-Djava.io.tmpdir=D:\work\apache-tomcat-7.0.78\temp" "-Djava.library.path=D:\work\java\1_7u17\jdk\bin;D:\work\apache-tomcat-7.0.78\bin" -Dsun.io.useCanonCaches=false -Xms1024m -Xmx1024m -XX:PermSize=256M -XX:MaxNewSize=1024m -XX:MaxPermSize=512m -Djava.awt.headless=true -classpath "D:\work\apache-tomcat-7.0.78/bin/bootstrap.jar;D:\work\apache-tomcat-7.0.78/bin/tomcat-juli.jar;D:\work\java\1_7u17\jdk/lib/tools.jar" org.apache.catalina.startup.Bootstrap start


这样的话 是不是 和平时我们在命令行运行java文件很像, java [-options] class [args...]  

然后我们 吧myeclipse 开启的tomcat 关了,在命令行输入以上内容,回车之后会发现和myeclipse启动tomcat控制台输入的内容一样,

然后我们在刚才打开的jconsole的程序里新建链接,


打开之后 我们比较两个链接的VM 概要,发现VM参数也都传进去了


由此我们最后得出的结论差不多是这样:

在myeclipse 启动tomcat 的时候,其实并没有去调用tomcat 的startup.bat程序,它只是去运行了tomcat路径下的某个文件org.apache.catalina.startup.Bootstrap,传入了运行参数就是 以'-'开头的那几个属性,传入了程序参数就是字符串“start”,至于这个文件org.apache.catalina.startup.Bootstrap,目前暂时还没有研究tomcat 的源码,所以我这里就不介绍了,有兴趣的可以去网上找找相关的资料或者下载tomcat 的源码看看。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值