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