<html><head>
      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
   <title>7.6&nbsp;Stopping Virgo Server for Apache Tomcat</title><link rel="stylesheet" href="css/stylesheet.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.74.0"><link rel="home" href="index.html" title="Virgo User Guide"><link rel="up" href="ch07.html" title="7.&nbsp;Starting and Stopping Virgo Server for Apache Tomcat"><link rel="prev" href="ch07s05.html" title="7.5&nbsp;Starting with a Custom Configuration Directory"><link rel="next" href="ch07s07.html" title="7.7&nbsp;Cleaning Virgo Server for Apache Tomcat without Starting it"><!--Begin Google Analytics code--><script type="text/javascript">
			var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
			document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
		</script><script type="text/javascript">
			var pageTracker = _gat._getTracker("UA-2728886-3");
			pageTracker._setDomainName("none");
			pageTracker._setAllowLinker(true);
			pageTracker._trackPageview();
		</script><!--End Google Analytics code--></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">7.6&nbsp;Stopping Virgo Server for Apache Tomcat</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch07s05.html">Prev</a>&nbsp;</td><th width="60%" align="center">7.&nbsp;Starting and Stopping Virgo Server for Apache Tomcat</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch07s07.html">Next</a></td></tr></table><hr></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e1883"></a>7.6&nbsp;Stopping Virgo Server for Apache Tomcat</h2></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1886"></a>Linux</h3></div></div></div><p>
	        To stop a running instance of Virgo Server for Apache Tomcat, start a new terminal window and run the <code class="literal">shutdown.sh</code> script:
	      </p><pre class="screen">prompt$ cd $SERVER_HOME
prompt$ bin/shutdown.sh</pre><p>
	        To stop a running instance of Virgo Server for Apache Tomcat immediately, bypassing normal shutdown
		processing, run <code class="literal">shutdown.sh</code> with the <code class="literal">-immediate</code> option:
	      </p><pre class="screen">prompt$ cd $SERVER_HOME
prompt$ bin/shutdown.sh -immediate</pre><p>
	        If, when you started the Web Server instance, you used the <code class="literal">-jmxport</code> option to specify a non-default JMX port number, 
	        then you must pass this port number to the <code class="literal">-jmxport</code> of the <code class="literal">shutdown.sh</code> script 
	        to gracefully shut it down.  
	        For example, if you specified <code class="literal">9090</code> as the JMX port, use the following to shut down the Web Server instance:
	      </p><pre class="screen">prompt$ cd $SERVER_HOME
prompt$ bin/shutdown.sh -jmxport 9090</pre></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1922"></a>Microsoft Windows</h3></div></div></div><p>
	        To stop a running instance of Virgo Server for Apache Tomcat, start a new console window and run the <code class="literal">shutdown.bat</code> script:
	      </p><pre class="screen">prompt&gt; cd %SERVER_HOME%
prompt&gt; bin\shutdown.bat</pre><p>
	        To stop a running instance of Virgo Server for Apache Tomcat immediately, bypassing normal shutdown
			processing, run <code class="literal">shutdown.bat</code> with the <code class="literal">-immediate</code> option:
	      </p><pre class="screen">prompt&gt; cd %SERVER_HOME%
prompt&gt; bin\shutdown.bat -immediate</pre><p>
	        If, when you started the Web Server instance, you used the <code class="literal">-jmxport</code> option to specify a non-default JMX port number, 
	        then you must pass this port number to the <code class="literal">-jmxport</code> of the <code class="literal">shutdown.bat</code> script to gracefully shut it down.  
	        For example, if you specified <code class="literal">9090</code> as the JMX port, use the following to shut down the Web Server instance:
	      </p><pre class="screen">prompt&gt; cd %SERVER_HOME%
prompt&gt; bin\shutdown.bat -jmxport 9090</pre></div></div><!--Begin LoopFuse code--><script src="http://loopfuse.net/webrecorder/js/listen.js" type="text/javascript"></script><script type="text/javascript">
			_lf_cid = "LF_48be82fa";
			_lf_remora();
		</script><!--End LoopFuse code--><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch07s05.html">Prev</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch07.html">Up</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch07s07.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">7.5&nbsp;Starting with a Custom Configuration Directory&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;7.7&nbsp;Cleaning  Virgo Server for Apache Tomcat without Starting it</td></tr></table></div></body></html>