[英]Compojure - how to start server from a function?
我正在編寫一個玩具應用程序以了解Compojure,並將其用於數據庫支持的Web應用程序。 我知道,如果我使用lein ring uberjar
編譯,則可以創建一個在登錄時自動啟動服務器的lein ring uberjar
。 現在,我想嘗試一個多功能的.jar文件,其想法是,在啟動jar時,我可以決定是否要執行數據庫管理或啟動服務器。
在我的core.clj中,我通過defroutes
定義了一些路由,並在project.clj中的 :ring {:handler ...}
下提供了這些路由。
我現在的問題是:如何從一個函數中啟動環形服務器,而依賴和代碼應盡可能少?
這個問題對開始從服務器的例子-main
功能,但使用依賴我解決不了,一些隱匿性功能的pleothora沒有解釋,並且幾乎可以肯定是過時了兩年。
我在Compojure文檔和Wiki中找不到任何提示,也歡迎指向docs / tut的指針。
編輯:工作版本,來自schaueho的答案和鈴聲教程:
(ns playground.core
(:require [ring.adapter.jetty :refer :all]
[compojure.core :refer :all]
[compojure.route :as route]))
(defroutes app-routes
(GET "/" [query]
(do (println "Server query:" query)
"<p>Hello from compojure and ring</p>"))
(route/resources "/")
(route/not-found "<h1>404 - Page not found</h1>"))
(run-jetty app-routes {:port 8080 :join? false})
由於某種原因,在重新啟動REPL之前,調用run-jetty
會給我ClassNotFoundExceptions具有完全相同的代碼。 我猜是一個受污染的名稱空間阻止了它的工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.