पर्यवेक्षक के साथ टॉमकैट को नियंत्रित करना


14

क्या पर्यवेक्षक के माध्यम से नियंत्रित करते समय "सुंदर रूप से शटडाउन" को बंद करने का एक तरीका है?

मेरी समझ टॉमकैट के शटडाउन की है। लिपि शटडाउन पोर्ट पर टॉमकैट से बात करती है ताकि एक सुंदर शटडाउन शुरू किया जा सके। पर्यवेक्षक के पास शटडाउन "कमांड" निर्दिष्ट करने का कोई तरीका नहीं है, केवल संकेतों का उपयोग करके।

क्या किसी ने सफलतापूर्वक टॉमकैट के साथ पर्यवेक्षक का उपयोग किया है?

इसके अलावा, जब से tomcat की स्टार्टअप.श स्क्रिप्ट जावा प्रक्रिया शुरू करती है, मैं परिणामी जावा कमांड को सीधे पर्यवेक्षक में कॉपी कर रहा हूं, लेकिन यह सभी पर्यावरण सेटअप के कारण स्टार्टअप.श लिपी का उपयोग करने जैसा अच्छा नहीं है। क्या स्टार्टअप.श लिपी का उपयोग करने के लिए पर्यवेक्षक प्राप्त करने का एक तरीका है लेकिन फिर भी परिणामी बाल जावा प्रक्रिया को ट्रैक करना है?

जवाबों:


6

उस स्क्रिप्ट के लिंक के लिए मार्क का धन्यवाद; यहाँ CentOS के लिए मेरा काम करने का उदाहरण है:

#!/bin/bash
# Source: https://confluence.atlassian.com/plugins/viewsource/viewpagesrc.action?pageId=252348917
function shutdown()
{
    date
    echo "Shutting down Tomcat"
    unset CATALINA_PID # Necessary in some cases
    unset LD_LIBRARY_PATH # Necessary in some cases
    unset JAVA_OPTS # Necessary in some cases

    $TOMCAT_HOME/bin/catalina.sh stop
}

date
echo "Starting Tomcat"
export CATALINA_PID=/tmp/$$
export JAVA_HOME=/usr/local/java
export LD_LIBRARY_PATH=/usr/local/apr/lib
export JAVA_OPTS="-Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.password.file=/etc/tomcat.jmx.pwd -Dcom.sun.management.jmxremote.access.file=/etc/tomcat.jmxremote.access -Dcom.sun.management.jmxremote.ssl=false -Xms128m -Xmx3072m -XX:MaxPermSize=256m"

# Uncomment to increase Tomcat's maximum heap allocation
# export JAVA_OPTS=-Xmx512M $JAVA_OPTS

. $TOMCAT_HOME/bin/catalina.sh start

# Allow any signal which would kill a process to stop Tomcat
trap shutdown HUP INT QUIT ABRT KILL ALRM TERM TSTP

echo "Waiting for `cat $CATALINA_PID`"
wait `cat $CATALINA_PID`

और यहाँ मैंने /etc/supervisord.conf में जो प्रयोग किया है:

[program:tomcat]
directory=/usr/local/tomcat
command=/usr/local/tomcat/bin/supervisord_wrapper.sh
stdout_logfile=syslog
stderr_logfile=syslog
user=apache

चल रहा है, यह इस तरह दिखता है:

[root@qa1.qa:~]# supervisorctl start tomcat
tomcat: started
[root@qa1.qa:~]# supervisorctl status
tomcat                           RUNNING    pid 9611, uptime 0:00:03
[root@qa1.qa:~]# ps -ef|grep t[o]mcat
apache    9611  9581  0 13:09 ?        00:00:00 /bin/bash /usr/local/tomcat/bin/supervisord_wrapper.sh start
apache    9623  9611 99 13:09 ?        00:00:10 /usr/local/java/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.password.file=/etc/tomcat.jmx.pwd -Dcom.sun.management.jmxremote.access.file=/etc/tomcat.jmxremote.access -Dcom.sun.management.jmxremote.ssl=false -Xms128m -Xmx3072m -XX:MaxPermSize=256m -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/local/tomcat/endorsed -classpath /usr/local/tomcat/bin/bootstrap.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start

मैंने शुरू में environmentनिर्देश के माध्यम से /etc/supervisord.conf में उन पर्यावरण चर को जोड़ने की कोशिश की , लेकिन सभी रिक्त स्थान और समान संकेतों के साथ JAVA_OPTS के साथ मुसीबत में भाग गया। रैपर लिपि में डालकर उसका ध्यान रखा।

उम्मीद है कि यह किसी और को कुछ समय बचाने में मदद करता है!


1
मैं पुष्टि कर सकता हूं कि यह CentOS 6 पर सुपरवाइजर v3.0 startमें टॉमकैट 7 के साथ काम करता है। ध्यान दें कि /etc/supervisord.conf में कमांड के अंत में एक अनावश्यक तर्क है क्योंकि स्क्रिप्ट इसके साथ कुछ भी नहीं करती है।
रिक हैनलोन II

हाँ, पकड़ने के लिए धन्यवाद! मैं उसे उत्प्रेरित करने के लिए पास करता था। मैंने इसे हटा दिया है।
आरोन आर।

20

Catalina.sh में एक "रन" कमांड है। यह पर्यवेक्षक के साथ पूरी तरह से ठीक काम करता है:

[program:tomcat]
command=/path/to/tomcat/bin/catalina.sh run
process_name=%(program_name)s
startsecs=5
stopsignal=INT
user=tomcat
redirect_stderr=true
stdout_logfile=/var/log/tomcat.log

"कैटरिना.श रन" के रूप में चलाए जाने वाले टॉमकैट अग्रभूमि में काम करता है, सही पाइड है और संकेतों को स्वीकार करता है। पर्यवेक्षक के साथ पूरी तरह से ठीक काम करता है।


1
यह एक स्वीकृत उत्तर होना चाहिए।
15

मुझे "सर्वर प्रारंभ नहीं किया जा सकता है। सर्वर का उदाहरण कॉन्फ़िगर नहीं किया गया है"
xtian

0

पर्यवेक्षक के पास शटडाउन "कमांड" निर्दिष्ट करने का कोई तरीका नहीं है, केवल संकेतों का उपयोग करके।

क्या आपने उपयोग करने की कोशिश की है stopsignal=QUIT?

[program:tomcat]
command=java ...
process_name=tomcat
priority=150
startsecs=10
directory=./
stopsignal=QUIT
stdout_logfile=./logs/tomcat.log
stderr_logfile=./logs/tomcat.err

ऐसा लगता है कि QUIT का कारण होता है कि टॉमकट को कैटिना.टाउट लॉग (उर्फ कंसोल) पर थ्रेड डंप किया जाए।
मार्क

1
यह एक दिलचस्प सुझाव है: संगम .atlassian.com/plugins/viewsource/… - अनिवार्य रूप से एक स्क्रिप्ट में catalina.sh लपेटो और शटडाउन के लिए एक ट्रैप फ़ंक्शन स्थापित करें ...
मार्क

@ यह OSX पर लॉन्च के लिए है, यह पर्यवेक्षक के लिए कैसे अनुकूलित किया जा सकता है?
कॉनरैड.डीन

1
@ कॉनरैड.डीन सुपरवाइजर समान धारणाओं का उपयोग करता है। एक ही स्क्रिप्ट पर्यवेक्षक के लिए काम करती है जिसमें कोई संशोधन नहीं है
मार्क
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.