【发布时间】:2013-06-23 19:21:08
【问题描述】:
我正在构建一个测试 clojure/ring 项目来了解它是如何工作的。我创建了一个名为“junkapp”的应用程序,它确实有一个处理程序
(defn handler [request]
{:status 200
:headers {"Content-type" "text/html"}
:body "Hello World"})
还有一个调用 wrap-resource 的静态内容
(def app
(wrap-resource handler "public"))
然后在我的 project.clj 中,我引用了 lein-ring 并将 :handler 设置为我的 junkapp.core/app
:plugins [[lein-ring "0.8.5"]]
:ring {:handler junkapp.core/app}
当我用 lein run 运行它时,一切都按预期工作。调用 / 返回“Hello World”,调用 /test.html 返回 resources/public/test.html 的内容。
但后来我尝试用
将它构建到一个war文件中lein ring uberwar junkapp.war
并将其放在tomcat7 服务器的webapps/ 目录下。现在,当我转到 junkapp 下的任何路径(例如 /junkapp/、/junkapp/foo、/junkapp/test.html)时,它总是返回“Hello World”,我似乎根本无法让它引用静态内容。在谷歌搜索中,我看到人们只是说要使用 compojure.route/resources 但是当我学习时,我希望它像这样工作,然后稍后添加更多库。这是怎么回事?
【问题讨论】:
-
您是否验证过静态文件包含在 WAR 中?
-
是的,这里要具体测试一下:webapps/junkapp/WEB-INF/classes/public/test.html