J'ai créé l'exemple WAR comme indiqué dans Compojure Getting Started Page et l'ai déployé dans le dossier wepapps Apache Tomcat 6.0.2. Le Web.xml j'est comme ci-dessous:WAR créé à l'aide de Clojure déployé sur Apache Tomcat ne s'exécute pas Servlet
<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>
Accès à l'URL suivante génère l'erreur
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)
J'ai inclus les pots contrib Clojure, Clojure dans le dossier WEB-INF/lib.
Est-ce que quelqu'un a rencontré un problème similaire avec les WAR Clojure sur Apache Tomcat?
Servlet Je suis en train de courir est:
;; 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)
Lorsque j'ai remplacé le (defservice greeter)
avec
(run-server {:port 8080}
"/*" (servlet greeter))
Je suis en mesure d'exécuter cette URL et d'accès du navigateur. Cependant, lorsque j'exécute cela à partir d'Apache Tomcat, je suis toujours confronté au même problème.
j'ajouté ce qui suit pour tester mon Servlet et cela fonctionne très bien. (run-server {: port 8090} \t "/ *" (servlet greeter)) –