Compojure Web アプリケーション フレームワークと Maven を使用して、Clojure で記述された単純な Web アプリケーションに取り組んでいます。
これは私のサーブレットの簡易版です。
(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 に入れています。WAR から servlet-api.jar を削除しても同じ問題が発生しますが、これは WAR パッケージ プロセス全体に何か問題があるということですか?
これはおそらく別の URL パスの問題でしょうか? ローカルの Jetty を起動すると、URL は次のようになります。
しかし、Tomcat で起動すると、次のようになります。
http://localhost:8080/myapp/home
「/myapp」はおそらくルートの一部ですか?どうすればその問題に取り組むことができますか?