Laden eines web.xml für Integrationstests mit Steg bis
Frage
OK ist diese Art der im Zusammenhang mit: Mit Steg installieren und Ausführen von Servlets Tests programmatisch
bekam es große Antworten und in der Lage gewesen Servlets programmatisch zu laden und seine alle super gemacht.
Was würde Ich mag aber tun, ist eine web.xml in einem Test (alle im Classpath) laden und haben sie einen Server laufen nach oben (die aktuelle Classpath verwenden) - Ich habe in docs gesehen, wie man es deuten auf ein Verzeichnis zu tun, aber ich möchte die classpath (besser an Ort und Stelle Prüfungen) abzuarbeiten. Im Wesentlichen Validierung meine web.xml.
(es ist nicht relevant, aber diese App in scala ist, aber ich habe kein Problem mit, dass hatte, alles funktioniert wie beworben).
Lösung
Es klingt wie das, was Sie tun möchten, ist programmatisch eine richtige Web-Anwendung zu laden, wie zum Laden einzelner Servlets Gegensatz (und ich glaube, Sie es tun wollen, ohne eine vollständige WAR-Datei mit aus arbeiten).
Server server = new Server( port );
WebAppContext root = new WebAppContext();
root.setWar("/path/to/somewhere");
root.setContextPath("/");
server.addHandler( root );
server.start();
Der Trick besteht darin, dass die /path/to/somewhere
ein WEB-INF
Verzeichnis und Ihre web.xml
Datei sollte innerhalb dort leben enthalten sollte. Nichts anderes muss innerhalb dieser Verzeichnisstruktur leben, wie alles anderes automatisch von Ihrem Classpath geladen werden kann (obwohl, wenn Sie wollen, Sie, dass ein Weg zu einer tatsächlichen WAR-Datei oder vollständig explodierten IST Baum machen könnten).