2009-01-02 13 views
7

मैं एक जावा अनुप्रयोग है, यह शुरू करने के लिएकैसे एक SYS वी सेवा के लिए एक मौजूदा जावा अनुप्रयोग कन्वर्ट करने के लिए

जावा जार myapp.jar

इसे रोकने के लिए मैं का उपयोग मैं CTRL + सी का उपयोग करता हूं।

अब मैं कुछ है कि मैं से शुरू कर सकते करने के लिए है कि आवेदन बदलने की आवश्यकता:

/etc/init.d/myapp शुरू

और मैं रोक सकता है के साथ:

/etc/init.d/myapp रोक

समस्या मैं प्रक्रिया के पीआईडी ​​को बचाने के बारे में सब कुछ, मुझे लगता है कि मैंने ऐसा करने के लिए कहीं और नुस्खा देखा है, मुझे याद नहीं है कि मैं कहां और इसे ढूंढ नहीं पा रहा हूं।

मैंने देखा कि Java Server Wrapper नामक एक प्रोजेक्ट है, लेकिन मुझे कुछ मुफ्त लगता है जो स्मृति उपयोग को सीमित नहीं करता है। और मुझे लगता है कि यह काम एक ही बैश स्क्रिप्ट में किया जा सकता है।

+0

"स्मृति उपयोग सीमित नहीं करता" से आपका क्या मतलब है? सूर्य का जेवीएम मेमोरी उपयोग हमेशा सीमित होता है (यदि आप -Xmx निर्दिष्ट नहीं करते हैं, तो * एक डिफ़ॉल्ट मान है)। – alex

+0

@alex, शायद मुझे इस पृष्ठ को सही ढंग से समझ में नहीं आया http://wrapper.tanukisoftware.org/doc/english/prop-java-maxmemory.html#percent –

+0

एंड्रिया: सूर्य जेवीएम में हमेशा कुछ मेमोरी सीमा होती है। यदि आप इसे स्पष्ट रूप से सेट नहीं करते हैं, तो यह 64 मीटर है। चूंकि 64 मीटर अधिक नहीं है, आप आमतौर पर हमेशा इस मान को बदलना चाहते हैं। ऐसा लगता है कि जावा सर्विस रैपर सामान्य सीमा के रूप में प्रतिशत का उपयोग करके इस सीमा को सेट कर सकता है, न केवल पूर्ण मूल्य। –

उत्तर

10

Apache Commons Daemon पर एक नज़र डालें।

इसमें 'जेएसवीसी' लॉन्चर है जो जावा आधारित डेमॉन (सेवाओं) को शुरू करने और रोकने का समर्थन करता है।

7

सबसे पहले, बचत * nix पर पीआईडी:

$ ./yourprogram & 
$ echo $! > /var/run/yourpid 

yourpid अब शामिल होंगे yourpgram पीआईडी ​​है, और/var/रन यह डाल करने के लिए उचित जगह है।

उपरोक्त को आपकी "प्रारंभ" स्क्रिप्ट में रखा जा सकता है। "स्टॉप" स्क्रिप्ट आपके जानना चाहती है कि क्या मारना है।

यदि आप अधिक सुरुचिपूर्ण होना चाहते हैं और अपने ऐप को सही तरीके से रोकना चाहते हैं, तो आप उचित शटडाउन हुक को कार्यान्वित करने के तरीके पर टोमकैट के org.apache.catalina.startup.Catalina.java के स्रोत कोड को देख सकते हैं।

दूसरे, ऊपर "बंद करो" और लिपियों "शुरू" तो /etc/init.d/mystopstartscript में रखा जा सकता:

#!/bin/bash 
# processname: yourprogram 
# pidfile: /var/run/yourpid 

case $1 in 
start) 
     sh /some/where/start.sh 
     ;; 
stop) 
     sh /some/where/stop.sh 
     ;; 
restart) 
     sh /some/where/stop.sh 
     sh /some/where/start.sh 
     ;; 
esac 
exit 0 

यह एक काफी देसी हल है विचारों ज्यादातर से लिया साथ, अच्छा 'ओएल टोमकैट, लेकिन मुझे उम्मीद है कि यह मदद करता है :)

संबंधित मुद्दे

 संबंधित मुद्दे