2010-04-24 10 views
52

मैं अंगूठी और क्लोजर का उपयोग कर एक वेब अनुप्रयोग लिख रहा हूं। मैं आईडीई के लिए विकास सर्वर और emacs/SLIME के ​​लिए जेटी एडाप्टर का उपयोग कर रहा हूं। जबकि रैप-रीलोड मदद करता है, रन-जेट्टी मेरे कीचड़ सत्र को अवरुद्ध करता है और मैं इसे अलग टर्मिनल सत्र में चलाने के बिना इसे शुरू/बंद करने में सक्षम होना चाहता हूं। आदर्श रूप में, मैं एक सर्वर एजेंट को परिभाषित करना चाहता हूं और स्टार्ट-सर्वर और स्टॉप-सर्वर फ़ंक्शन करता हूं जो एजेंट के अंदर सर्वर को प्रारंभ/बंद कर देगा। क्या यह संभव है?मैं क्लोजर में जेटी सर्वर को कैसे रोकूं?

उत्तर

97

मैं आमतौर पर मेरी अंगूठी अनुप्रयोग में एक लाइन है कि ऐसा दिखाई देता है। यह मुझे इस फाइल को फिर से संकलित करने की इजाजत देता है बिना चिंता किए कि मेरा सर्वर फिर से परिभाषित हो जाएगा।

user=> (.stop server) 

और

user=> (.start server) 
+0

बिल्कुल वही जो मैं खोज रहा था! –

+0

मुझे यह त्रुटि मिल रही है: 'कोई मिलान फ़ील्ड नहीं मिला: कक्षा clojure.lang.PersistentList [थ्रो क्लास java.lang.IllegalArgumentException] 'के लिए शुरू करें। कोई विचार? – Tyler

+3

कोई बात नहीं, समस्या यह थी कि defonce फिर से defing नहीं था - कल्पना कीजिए :) – Tyler

1

जेटी दस्तावेज में जेटी के graceful shutdown पर कुछ जानकारी है। शायद यह पर्याप्त जानकारी नहीं है लेकिन यह आपको शुरू कर सकता है।

मैंने अभी तक कंपोज़र के साथ खेलना शुरू नहीं किया है, लेकिन कुल मिलाकर मैं टोमकैट के साथ काम करना पसंद करता हूं। यह अधिक पूर्ण विशेषताओं है; अन्य चीजों के साथ, इसे शुरू करने और इसे बंद करने के लिए एक अच्छी तरह से प्रलेखित एपीआई है, यह एक समर्पित बंदरगाह पर शट डाउन कमांड के लिए सुनता है; ऐसा करने के लिए ant कार्य हैं, और उन्हें निश्चित रूप से जावा ऐप से भी बुलाया जा सकता है। मुझे नहीं पता कि किस प्रकार का जादू कंपोजर आरईपीएल को वेब कंटेनर के चल रहे उदाहरण से कनेक्ट करने के साथ करता है, और यदि स्वचालित श्रेणी रीलोडिंग होता है ... उम्मीद है कि कोई और जानकारी अधिक जानकारी प्रदान कर पाएगा।

(defonce server (run-jetty #'my-app {:port 8080 :join? false})) 

यह आरईपीएल अप ताला लगा रोकता:

+0

ठीक है, इस उदाहरण में, मैं भी compojure उपयोग नहीं कर रहा, मैं सिर्फ ring.jetty.adapter का उपयोग कर रहा शुरू करने के लिए घाट: यह भी तुम इतनी तरह आरईपीएल में सहभागिता करने देता है सर्वर। जेटी के साथ जाने का कारण यह है कि मुझे हर समय फिर से कंपाइल करने की ज़रूरत नहीं है। –

+1

वाह, जेट्टी आपको ऐसा करने देता है? ठंडा। जल्द ही इस बारे में सीखना होगा। धन्यवाद! –

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