Y compris les fichiers dans web.xml
Je suis dans le processus de l'écriture de tests unitaires pour une JEE5 service web. Le comportement du service web dépend des attributs définis dans le web.xml
fichier. Je suis désireux de donc diviser mon web.xml
dans une partie constante et une partie qui est a changé entre les deux séries de tests.
Pour voir si c'est réellement possible, j'ai essayé de voir si je peux diviser le welcome-file-list
attribut. À l'aide de certaines instructions que j'ai trouvé j'ai trouvé le suivant:
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>
Cependant, j'obtiens des erreurs de validation sur le web.xml
fichier:
Attribut "version" doit être déclaré pour l'élément de type "web-app". [7]
L'attribut "xmlns" doit être déclaré pour l'élément de type "web-app". [7]
L'attribut "xmlns:xsi" doit être déclaré pour l'élément de type "web-app". [7]
L'attribut "xsi:schemaLocation" doit être déclaré pour l'élément de type "web-app". [7]
J'ai le sentiment que l'utilisation d'une web app v2.3 DTD et une web app v2.5 schéma à l'intérieur du même fichier est le problème, mais je ne sais pas comment je vais être capable de se déplacer.
(Toutes les autres approches de la division d'un web.xml fichier en petits morceaux seraient les bienvenus aussi!)
Mise à jour
Si je retire la DTD de référence comme si...
<?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.
...il semble que le processus de validation ignore la web-app_2_5.xsd
fichier:
Élément de type "web-app" doit être déclarée. [5]
Type d'élément "auditeur", doivent être déclarés. [6]
Type d'élément "listener-class" doit être déclarée. [7]
Type d'élément "servlet" doit être déclarée. [9]
etc, etc, etc.
OriginalL'auteur Catchwa | 2011-07-06
Vous devez vous connecter pour publier un commentaire.
J'ai fini par l'ajout d'un crochet sur mon web service qui vérifie la présence d'un eproperties fichier. Si il en trouve un, il sait qu'il est en mode d'essai et au lieu d'utiliser les valeurs indiquées dans
web.xml
, il tire à partir du fichier de propriétés. Pas très élégant, mais au moins il fonctionne. Les propriétés de fichier est copié dans leWEB-INF
répertoire par JUnit test au cours de la@BeforeClass
méthode. Étant donné le succès de cette méthode, je me demandais siweb.xml
est le meilleur endroit pour stocker les paramètres de l'application web de toute façon...OriginalL'auteur Catchwa