Я работаю над простым веб-приложением, написанным на Clojure, с использованием инфраструктуры веб-приложений Compojure и Maven.
Это упрощенная версия моего сервлета:
(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
Однако, когда я создаю WAR из этого и развертываю его на Tomcat, я всегда вижу свою страницу 404, то есть «Файл не найден». Вы можете мне сказать, почему это происходит?
Я строю ВОЙНУ следующим образом:
mvn package
Я заметил предупреждение в Tomcat о дублировании servlet-api.jar, и Maven действительно помещает его в WEB-INF / lib. Я удалил servlet-api.jar из WAR и по-прежнему сталкиваюсь с той же проблемой, но означает ли это, что что-то не так со всем моим процессом упаковки WAR?
Может быть, это проблема с другим URL-адресом? Когда я запускаю локальную пристань, URL-адрес выглядит следующим образом:
Но если я запускаю его на Tomcat, это будет примерно так:
http://localhost:8080/myapp/home
Может быть, «/ myapp» является частью маршрута? Как мне решить эту проблему?