Compojure Getting Started Pageに示されているサンプル WAR を作成し、 Apache Tomcat 6.0.2 の wepapps フォルダーにデプロイしました。私が使用した Web.xml は次のとおりです。
<web-app>
<servlet>
<servlet-name>myservlet</servlet-name>
<servlet-class>myapp.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>myservlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
URL にアクセスすると、次のエラーがスローされます
java.lang.NullPointerException: Handler returned nil (maybe no routes matched URI)
compojure.http.servlet$request_handler__72.invoke(servlet.clj:110)
myapp.MyServlet$_service__108.invoke(MyServlet.clj:11)
myapp.MyServlet.service(Unknown Source)
Clojure、Clojure contrib jar を WEB-INF/lib フォルダーに含めました。
Apache Tomcat の Clojure WAR で同様の問題に遭遇した人はいますか?
私が実行しようとしているサーブレットは次のとおりです。
;; src/myapp/MyServlet.clj
(ns myapp.MyServlet
(:use compojure)
(:gen-class
:extends javax.servlet.http.HttpServlet))
(defroutes greeter
(GET "/"
(html [:h1 "Hello World"])))
(defservice greeter)
に置き換えた(defservice greeter)
とき
(run-server {:port 8080}
"/*" (servlet greeter))
これを実行して、ブラウザから URL にアクセスできます。
ただし、これを Apache Tomcat から実行すると、同じ問題に直面します。