2010-04-24 31 views
52

Halka ve clojure kullanarak bir web uygulaması yazıyorum. Geliştirme sunucusu için jetty bağdaştırıcısını ve IDE için emacs/SLIME kullanıyorum. Sarma-yeniden yükleme yardımcı olurken, run-jetty slime seansı engeller ve ben ayrı bir terminal oturumunda çalıştırmak zorunda kalmadan onu başlatmak/durdurabilmek isterim. İdeal olarak, bir sunucu aracısı tanımlamak istiyorum ve sunucuyu aracının içinde başlatan/durduran start-server ve stop-server işlevlerini yerine getiriyorum. Mümkün mü?Clojure'da jetty sunucusunu nasıl durdurabilirim?

cevap

97

Ben genellikle aşağıdaki gibi görünür benim Halka uygulamasında bir çizgi var. Ayrıca, sunucumun yeniden tanımlanacağından endişelenmeden bu dosyayı yeniden derlememi sağlar.

user=> (.stop server) 

ve

user=> (.start server) 
+0

Tam olarak aradığım şey! –

+0

Bu hatayı alıyorum: Eşleşen alan bulunamadı: clojure.lang.PersistentList [Attre class java.lang.IllegalArgumentException] '. Herhangi bir fikir? – Tyler

+3

Unutmayın, sorun, defonenin yeniden tanımlanmamasıydı - hayal et :) – Tyler

1

Jetty belgelerinde Jetty'nin graceful shutdown hakkında bazı bilgiler vardır. Muhtemelen yeterli bilgi değil ama başlamanıza neden olabilir.

Henüz componentjure ile oynamaya başlamadım, ancak genel olarak Tomcat ile çalışmayı tercih ediyorum. Daha çok özellikli; diğer şeylerin yanı sıra, onu başlatmak ve kapatmak için iyi belgelenmiş bir API vardır, özel bir bağlantı noktasında kapatma komutunu dinler; Bunu yapmak için ant görevleri vardır ve tabii ki bir Java uygulamasından da çağrılabilirler. Ne tür bir sihirbazın, REPL'i Web konteynerinin çalışan bir örneğine bağlamasıyla ne tür bir sihirbazlık yaptıklarını bilmiyorum ve otomatik sınıf yeniden yükleme gerçekleşirse nasıl olur da umarım bir başkası daha fazla bilgi sağlayabilecektir. Bu Çoğaltma kilitlenmesini önler

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

:

+0

Eh, bu durumda, ben bile compojure kullanmıyorum, sadece ring.jetty.adapter kullanıyorum başlatmaya İskele: Ayrıca şöyle Repl de etkileşim sağlar sunucusu. Jetty ile gitme sebebi, her zaman yeniden derlemem gerekmiyor. –

+1

Vay, Jetty bunu yapmana izin veriyor mu? Güzel. Bunu en kısa zamanda öğrenmek zorunda olacak. Teşekkürler! –

İlgili konular