我正在使用Compojure Web應用程序框架和Maven編寫一個使用Clojure編寫的簡單Web應用程序。Clojure + Compojure + Maven應用程序在Tomcat中不起作用
這是我的servlet的簡化版本:
(ns core
(:use compojure.core ring.util.servlet)
(:require [compojure.route :as route])
(:gen-class :extends javax.servlet.http.HttpServlet))
(defroutes main-routes
(GET "/" _ {:status 302 :headers {"Location" "/about"}})
(GET "/about" [] "This is the about page")
(route/not-found "File not found."))
(defservice main-routes)
這像這樣使用Maven的Jetty的目標工作正常:
mvn jetty:run
然而,當我建立從經此一戰和部署一個Tomcat,我總是看到我的404頁面,即「文件未找到。」。你能告訴我爲什麼發生這種情況嗎?
我構建WAR如下:
mvn package
我注意到在Tomcat中關於重複的servlet-api.jar文件警告,和Maven確實把它放到WEB-INF/lib目錄下。我從WAR中刪除了servlet-api.jar,但仍然遇到了同樣的問題,但這是否意味着我的整個WAR打包過程出了問題?
這可能是不同的URL路徑的問題?當我開始在本地碼頭,網址如下:
但如果我啓動它在Tomcat中,它是這樣的:
http://localhost:8080/myapp/home
原來是「/ myapp「也許是路線的一部分?我將如何解決這個問題?
謝謝,我想通了你的項目。訣竅是1.按照您的說明設置jetty的上下文路徑,並2.將生成的war的名稱設置爲「myapp」,因此它不會是「myapp-1.0.0-SNAPHOT」。任何關於爲什麼servlet-api.jar包含在內的想法? – futlib 2011-03-19 14:08:31