Was macht ein Servlet-3.0-kompatiblen web-app-Erklärung web.xml tun?
Ich bin die Bereitstellung einer web-Anwendung, die deklariert ist web.xml und Bereitstellung als .war-Datei.
Ich bin auf die Bereitstellung von Jetty 9.1.x (aber ich denke, diese Frage ist nicht container-spezifisch).
Meine web.xml die Datei ist schon ziemlich alt und erklärt sich selbst als Servlet 2.4 Anwendung:
<web-app version="2.4" id="my_app"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
Meine Konfiguration eigentlich erklärt einige der Servlet 3.0-nur features, wie eine Standard-Fehler-Seite. Diese Funktionen überprüfen nicht nach dem schema, aber die Funktionen scheinen, um korrekt zu arbeiten.
Da bin ich mit 3.0-features, die ich ändern möchten, ist die Erklärung richtig:
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
Aber ich bin erschrocken, dies zu tun, weil ich verstehe nicht, was der Unterschied sein wird zum Jetty.
Wird die änderung der Deklaration, keine Auswirkungen auf das Laufzeitverhalten von Jetty? Tut Steg Behandlung einer 2.4-app irgendwie anders als ein 3.0 app?
- Ich würde denken, es tut. Für investigative Zwecke, fügen Sie ein
@WebListener
annotierten Klasse, dieServletContextListner
(oder jedes andere servlet-listener-Typ) auf Ihren Klassenpfad mit 3.0 und sehen, ob es abgeholt. - Meine WebListener ist nicht abgeholt, unabhängig von der Erklärung. In allen meinen Tests konnte ich nicht finden, die sich anders Verhalten. Was andere feature könnte ich testen???
- Ich glaube, ich sehe das problem: meine app setzt auf gwt-servlet-2.5.1... also egal was ich mache, meine Wünsche werden bedient durch ein servlet 2.5 und nicht 3.0-servlet.
- Yup, das ist es. Wenn Sie waren auf einem Servlet-3.0-kompatibel-container, würde ich denken erklärt, eine web-app-version machen würde, die container-Unterstützung nur Funktionen. Ich würde versuchen, mit einem anderen container nur um sicher zu sein.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie in der Lage, tauschen Sie einfach nur die schema-Deklaration von 2.4 zu 3.0.
Wissenschaftliche Methode
Zunächst brach ich auf, um zu beweisen, dass es mit tut
diff
zwischen 2.4 und 2.5 und ein weiterer Vergleich 2.5 und 3.0.Ich habe mich davon überzeugt, dass die Unterschiede zwischen 2.4 und 2.5 sind lediglich Additiv und den Namen Raum haben sich dabei von
j2ee
zujavaee
.Jedoch xsd-schema für 3.0 kleiner ist dann 1/3. die beiden anderen Versionen. Nicht sicher, wie man in diesem Fall Vorgehen (Ideen willkommen!)
Können Sie downloaden "alle schemas" von hier und Mach den Vergleich selber:
Nicht so wissenschaftlichen Methode
Hier sind die was ist neu Artikel beschreibt jede neue version von der standard:
Wenn Sie Lesen, die änderungen zu
web.xml
Deskriptor in den Artikeln erwähnt sind minute.Was ich tun würde, ist einfach Liste alle Elemente in Ihrer ursprünglichen
web.xml
und bestätigen, dass Sie existieren, die in diesem Dokument beschreiben die 3.0-schema.Hoffe, das hilft!