Ich versuche eine WAR-Datei in Clojure zu Tomcat 6 auf Debian Lenny zu implementieren.NPE eine Clojure WAR in Tomcat installieren, Fixes neu starten
Ich bekomme eine NullPointerException, wenn ich es in das Verzeichnis webapps kopiere (sowohl für den ersten Typ als auch beim Überschreiben eines bestehenden Krieges). Seltsamerweise behebt der Neustart von Tomcat das Problem und das Servlet läuft gut. Ich verpackte den Krieg mit Leiningen-Krieg (auch versucht Lein-Ring). Das Servlet funktioniert einwandfrei, wenn Jetty verwendet wird.
Hier ist der entsprechende Protokolleintrag von Tomcat:
Jan 12, 2011 7:18:06 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Allocate exception for servlet foobar
java.lang.NullPointerException
at clojure.lang.Var.invoke(Var.java:373)
at clojure.lang.AFn.applyToHelper(AFn.java:169)
at clojure.lang.Var.applyTo(Var.java:482)
at clojure.lang.Compiler.macroexpand1(Compiler.java:5286)
at clojure.lang.Compiler.macroexpand(Compiler.java:5341)
at clojure.lang.Compiler.eval(Compiler.java:5409)
at clojure.lang.Compiler.load(Compiler.java:5857)
at clojure.lang.RT.loadResourceScript(RT.java:340)
at clojure.lang.RT.loadResourceScript(RT.java:331)
at clojure.lang.RT.load(RT.java:409)
at clojure.lang.RT.load(RT.java:381)
at clojure.core$load$fn__4511.invoke(core.clj:4905)
at clojure.core$load.doInvoke(core.clj:4904)
at clojure.lang.RestFn.invoke(RestFn.java:409)
at clojure.lang.Var.invoke(Var.java:365)
at foobar.servlet.<clinit>(Unknown Source)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
Hier ist die Quelle, auf das absolute Minimum vereinfacht:
(ns foobar.servlet
(:use [ring.util.servlet :only [defservice]])
(:gen-class :extends javax.servlet.http.HttpServlet))
(defn handler
[req]
{:status 200
:headers {"Content-type" "text/html"}
:body "hi"})
(defservice handler)
Relevante lein Abhängigkeiten:
[org.clojure/clojure "1.2.0"]
[ring/ring-core "0.3.4"]
[ring/ring-servlet "0.3.4"]
Ich stellte sicher, Es gibt keine doppelten JARs in WAR und Tomcat's lib dir.
Ich bin ratlos. Wer weiß, was los ist oder Tipps zur Fehlerbehebung? Tomcat bei jedem Einsatz neu starten zu müssen, ist ein Ärgernis.
Danke für den Tipp, aber kein Glück :( –