I would like to be able to start and stop Tomcat from a Java program running on 
a Windows machine. I looked at the contents of startup.bat, shutdown.bat and 
catalina.bat, and it looks like one easy way to do that would be to set system 
properties that correspond to the -D command line arguments as they are set up 
in the script files, and then call Bootstrap.main with a list argument that 
contains either "start" or "stop". When I tried this running my Java program in 
Eclipse, the call to Bootstrap.main(new String[]{"start"}) did not return. I 
don't understand why this is, because running startup.bat in a command prompt 
window gets Tomcat running and then returns to a command prompt. Is there a way 
to call Bootstrap.main(new String[]{"start"}) in an application's main thread 
so that it returns and Tomcat continues running?

I also tried calling Bootstrap.main(new String[]{"start"}) in a separate 
thread, but I must not have done it right, because when I call 
Bootstrap.main(new String[]{"stop"}) it claims to stop Tomcat but there is 
still a process listening on the port that I designated.

What is the best way to start and stop Tomcat programmatically from a Java 
application? If it is better to do it using a different class, such as Tomcat 
or Embedded, could someone point me to information about how to do that? I 
tried using the Tomcat class recently and I couldn't get it to work either.

I am working with Tomcat 7.0.25 x64 on Windows 2008 Server.
Thanks,
Mike

Reply via email to