Clojure + Compojure + l'application Maven ne fonctionne pas dans Tomcat
Question
Je travaille sur une simple application web écrite en Clojure, en utilisant le cadre d'applications Web Compojure et Maven.
Ceci est une version simplifiée de mon 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)
Cela fonctionne bien en utilisant l'objectif de la jetée Maven comme ceci:
mvn jetty:run
Cependant, quand je construis une guerre de cela et de le déployer sur un Tomcat, je vois toujours ma page 404, à savoir « Fichier introuvable. ». Pouvez-vous me dire pourquoi cela se produit?
Je construire la guerre comme suit:
mvn package
Je remarqué un avertissement dans Tomcat à propos de double servlet-api.jar et Maven ne met en effet dans WEB-INF / lib. Je servlet api.jar retiré de la guerre et encore obtenir le même problème, mais que cela signifie que quelque chose ne va pas avec tout mon processus d'emballage WAR?
Peut-être est-ce un problème avec le chemin d'accès différent URL? Quand je commence une jetée locale, l'URL est la suivante:
http: // localhost: 8080 / home
Mais si je le lance sur un Tomcat, il est comme ceci:
http: // localhost: 8080 / myapp / home
est le « / myapp » peut-être une partie de la route? Comment puis-je aborder ce problème?
La solution
Rechercher exemple suivant - il exécuter à la fois dans tomcat et jetée. Si vous utilisez mvn jetée: course , vous devez également spécifier le préfixe qui sera utilisé (vous pouvez le voir dans pom.xml pour cible de guerre)
Autres conseils
http://wiki.apache.org/tomcat/HowTo :
Si vous utilisez la méthode « guerre » pour déployer votre application:
- supprimer le répertoire ROOT
- le nom de votre fichier de guerre "ROOT.war" (majuscules obligatoires)
- déposez le fichier ROOT.war directement dans le répertoire / webapps répertoire. Tomcat déploiera automatiquement.