Приложение Clojure + Compojure + Maven не работает в Tomcat - PullRequest
4 голосов
/ 18 марта 2011

Я работаю над простым веб-приложением, написанным на 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" может быть частью маршрута?Как бы я решил эту проблему?

Ответы [ 2 ]

3 голосов
/ 18 марта 2011

Смотрите в следующем примере - он работает как в tomcat, так и в jetty. Если вы используете mvn jetty: run , то вам также необходимо указать префикс, который будет использоваться (вы можете увидеть это в pom.xml для цели войны)

0 голосов
/ 18 марта 2011

Свободно цитируется с http://wiki.apache.org/tomcat/HowTo:

Если вы используете метод «войны» для развертывания приложения:

  • удалить каталог ROOT
  • назовите свой военный файл "ROOT.war" (заглавные буквы обязательно)
  • перетащите файл ROOT.war непосредственно в каталог / webapps. Tomcat автоматически развернет его.
...