今天在看《深入剖析tomcat》一书(pdf),目的是了解一下tomcat的内部实现原理。在看书的时候无意中在网上找到了tomcat的配置文件相关的官方文档:
https://tomcat.apache.org/tomcat-7.0-doc/config/ 这个文档主要讲解的是tomcat的一些配置参数。
在看的时候无意中看到了一个commons deamon组件:
http://commons.apache.org/proper/commons-daemon/ 这个组件的主要作用是能够将你的程序作为后台程序运行。
后来我就想,我们平时写的程序在linux上通过java 命令启动之后,如果我把控制台关掉,那么程序就会结束运行,如何让程序在我们将控制台关掉之后仍然能够运行呢?我们采用的办法一般都是在启动命令的最后添加一个“&”符号,这样就能保证我们把控制台输出关闭的时候,程序仍然能够运行。
后来想了想,为什么tomcat也可以呢?为此我看了一个tomcat的启动文件,catalina.sh,发现它也是这样做的:

这是在Linux下,但是如果在windows下呢?如何让程序在后台运行?
思路:将程序注册成windows服务。
看了一下tomcat 在windows下也是这样的,即在windows下,我们如果想让tomcat在后台运行,需要执行其bin目录下的service.bat文件,通过service install命令,将其注册成为服务
但我仍然存在疑问:
1、java里面的 setDeamon()不可以实现后台服务么?
2、tomcat文档里推荐的commons deamon项目又是干嘛的呢?
待解决