statischer Inhalt. Unterschied in Tomcat6- und Tomcat7 -Verhaltensweisen
Frage
Es tut mir leid, wenn ich etwas frage, das 1000 Mal gefragt wurde, aber ich habe danach gesucht und nichts gefunden :)
Ich habe 2 Tomcat -Installationen. Tomcat 6 unter Windows und Tomcat 7 auf Linux -Maschine. Ich habe ein Projekt, das Frühling verwendet und statische Inhalte hat, die ich bedienen möchte, ohne die Anfragen durch den Frühling zu steuern.
Hier ist meine Servlet -Konfiguration:
<servlet-mapping>
<servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/static/*</url-pattern>
</servlet-mapping>
Meine statischen Dateien befinden sich im "statischen" Ordner neben dem Web-Inf-Ordner.
Nun ist das Lustige, dass auf Tomcat7, wenn ich eine Anfrage mache http://myserver.com/myproject/static/css/main.css Es sucht nach der Datei in /webapps/myproject/static/css/main.css, aber auf Tomcat6 sucht es danach in /webapps/myproject/css/main.css und erzeugt einen Fehler, der besagt, dass es keine solche Datei gibt.
Welche Konfiguration sollte ich optimieren, damit beide Server genauso arbeiten können?
Lösung
Sie missbrauchen tatsächlich Tomcats Standard -Servlet. Das Standard -Servlet wird nicht durch die Servlet -API und spezifisch für den Servlet Container definiert. Es ist bekannt /WEB-INF
und /META-INF
Wenn Sie auf diese Weise missbraucht werden, können Sie hiermit Türen für vertrauliche Informationen öffnen. Dies wurde als berichtet als Ausgabe 50026 und wird in Tomcat 6.0.30 und vorne festgelegt.
Die Lösung ist einfach: Sie sollten den Standard -Servlet in Ihrem nicht ausdrücklich abbilden web.xml
überhaupt. Wie im Fehlerbericht angegeben, müssen Sie verwenden dieser Ansatz stattdessen.
Andere Tipps
Eine weitere, einfachere Antwort von Casey auf die gleiche Frage, die Balusc Links zu Links können eine Begrüßungsdateiliste angeben und die letzte Begrüßungsdatei in das URL -Muster Ihres Anwendungsservlets abbilden. In dieser Konfiguration verarbeitet das Standard -Servlet statische Inhalte, während unübertroffene URLs in die Anwendung fallen.