Auch Dateien, die in web.xml

Ich bin in den Prozess des Schreibens von unit tests für eine JEE5 web-service. Das Verhalten der web-Dienst ist abhängig von den Parametern eingestellt, die in der web.xml - Datei. Ich will daher mein split web.xml in einen Konstanten Teil und einen Teil, die geändert wird, um zwischen den Testläufen.

Um zu sehen, ob es tatsächlich möglich ist, habe ich versucht, um zu sehen, ob ich splitten kann aus der welcome-file-list Attribut. Mit einige Anweisungen, die ich gefunden habe ich die folgenden:

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd" [
  <!ENTITY fragment SYSTEM "fragment.xml">
]>
<web-app version="2.5" 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_2_5.xsd">
    <listener>
        <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
    </listener>
    <servlet>
        <servlet-name>NewWebService</servlet-name>
        <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>NewWebService</servlet-name>
        <url-pattern>/NewWebService</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
  &fragment;
</web-app>

fragment.xml

<?xml version="1.0" encoding="UTF-8"?>
<welcome-file-list>
  <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

Aber ich bin immer in der Validierung Fehler auf der web.xml Datei:

Attribut "version" muss erklärt werden, für den element-Typ "web-app". [7]
Attribut "xmlns" deklariert werden muss, für den element-Typ "web-app". [7]
Attribut "xmlns:xsi" deklariert werden muss, für den element-Typ "web-app". [7]
Attribut "xsi:schemaLocation" deklariert werden muss, für den element-Typ "web-app". [7]

Habe ich das Gefühl, dass mit einer web-app v2.3 DTD-und eine web-app v2.5 schema innerhalb der gleichen Datei ist das problem, aber ich weiß nicht, wie ich werde in der Lage sein, diese zu umgehen.

(Alle anderen Ansätze, die in teilen eines web.xml Datei in kleinere Stücke wäre auch willkommen!)

Update

Wenn ich entfernen Sie die DTD-Referenz so wie...

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app[
  <!ENTITY fragment SYSTEM "fragment.xml">
]>
<web-app version="2.5" 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_2_5.xsd">
etc, etc, etc.

...es scheint, als ob der Prozess der Validierung ignoriert die web-app_2_5.xsd Datei:

Element-Typ "web-app" deklariert werden müssen. [5]
Element-Typ "Zuhörer" deklariert werden müssen. [6]
Element-Typ "listener-Klasse" deklariert werden müssen. [7]
Element-Typ "servlet" deklariert werden müssen. [9]
etc, etc, etc.

TUN SIE DAS NICHT! Sie sind im Grunde die Verwendung eines Tomcat-spezifische Sicherheitslücke ist behoben in neueren Tomcat-Versionen und nicht unbedingt in verschiedenen Servern. In anderen Worten, die webapp mit solchen web.xml unportabel ist. Verwandtes Thema Bericht: bugzilla.redhat.com/show_bug.cgi?id=1069911

InformationsquelleAutor Catchwa | 2011-07-06

Schreibe einen Kommentar