2011-06-23 44 views
4

我安裝了tomcat 6.0.32並在其上運行我的web應用程序。當tomcat正常啓動或停止時,常用的停止/啓動工作正常。但是當我嘗試在啓動時停止tomcat時,停止失敗。Tomcat6關機失敗

$service tomcat6 stop 

Stopping tomcat6:           [FAILED] 

日誌中的錯誤是:

SEVERE: Catalina.stop: 
java.net.ConnectException: Connection refused 
     at java.net.PlainSocketImpl.socketConnect(Native Method) 
     at java.net.PlainSocketImpl.doConnect(Unknown Source) 
     at java.net.PlainSocketImpl.connectToAddress(Unknown Source) 
     at java.net.PlainSocketImpl.connect(Unknown Source) 
     at java.net.SocksSocketImpl.connect(Unknown Source) 
     at java.net.Socket.connect(Unknown Source) 
     at java.net.Socket.connect(Unknown Source) 
     at java.net.Socket.<init>(Unknown Source) 
     at java.net.Socket.<init>(Unknown Source) 
     at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:422) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
     at java.lang.reflect.Method.invoke(Unknown Source) 
     at org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:338) 
     at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:416) 

我一直在使用武力以及試過,但它不工作。有誰知道我們該如何解決這個問題?

注意:我能夠在啓動過程中阻止tomcat6(6.0.24),但它在6.0.32版本中不起作用。任何幫助/信息將是一個很大的幫助!

+0

你試過只發出一個殺死-9的PID嗎? – Joe

+0

嗨喬,是的,我知道kill命令會殺死進程。我只需要一種優雅的方式來阻止tomcat,無論我何時需要它,即使在啓動時也是如此。直到我們升級到6.0.32之前,我一直沒有問題。我們希望使用此版本並解決停止問題。 –

回答

4

這是爲了幫助遇到同樣問題的人。請記住,我沒有解釋如何更改的工作,但它解決了我的問題,以便張貼給他人。

/etc/init.d/tomcat6中有一個名爲「parseOption」的函數,它解析配置文件中指定的配置。該函數在其他函數[stop/start]中被調用,並且在解析配置時工作正常,如上面的輸出中所示。

裏面的停止功能,它最初被稱爲如下:

if [ -f "/var/lock/subsys/${NAME}" ]; then 
     parseOptions 
     $SU - $TOMCAT_USER -c "${TOMCAT_SCRIPT} stop" >> $TOMCAT_LOG 2>&1 

我改變了上面:

if [ -f "/var/lock/subsys/${NAME}" ]; then 
    $SU - $TOMCAT_USER -c "${TOMCAT_SCRIPT} stop" >> $TOMCAT_LOG 2>&1 
    parseOptions 

和它的工作。在啓動過程中,我能夠阻止tomcat。 停止功能的其他部分也正常執行[刪除PID文件,殺死進程...]。 當tomcat處於啓動模式或啓動模式時,實現方式有多不同,因爲在啓動模式下,常規的停止工作正常,沒有任何改變。