2009-04-30 12 views
8

Aceptar esto es un poco relacionado con: Using jetty to install and run servlet tests programmaticallyun web.xml para las pruebas de integración con embarcadero

dieron unas respuestas allí, y han sido capaces de cargar hasta servlets mediante programación y su todo hecho de impresionante.

Lo que me gustaría hacer sin embargo es cargar un web.xml en una prueba (todo en la ruta de clase) y ejecutarlo en un servidor (usando la ruta de clases actual) - He visto en los documentos cómo señalarlo a un directorio para hacer eso, pero quiero trabajar fuera del classpath (mejor para las pruebas en el lugar). Esencialmente validar mi web.xml.

(no es relevante, pero esta aplicación está en scala, pero no he tenido ningún problema con eso, todo funciona según lo anunciado).

+0

No veo tu problema, ¿qué quieres decir con "all in the classpath"? Como entiendo, te gustaría comenzar un embarcadero con cierto web.xml. Esto no debería ser un problema, copie el web.xml con un script e inicie el Jetty. – Mork0075

+0

En realidad, quiero que funcione con pruebas; no lo inicie como un proceso separado (que funciona bien, pero no es tan ordenado como una prueba de unidad en proceso); es solo una cuestión de conveniencia. –

Respuesta

13

Parece que lo que quieres hacer es cargar programáticamente una aplicación web adecuada, en lugar de cargar servlets individuales (y creo que quieres hacerlo sin tener que tener un archivo WAR completo).

Server server = new Server(port); 
WebAppContext root = new WebAppContext(); 

root.setWar("/path/to/somewhere"); 
root.setContextPath("/"); 

server.addHandler(root); 
server.start(); 

El truco es que el /path/to/somewhere debe contener un directorio WEB-INF y su archivo web.xml deberían vivir allí dentro. Nada más necesita vivir dentro de esa estructura de directorio, ya que todo lo demás se puede cargar automáticamente desde su classpath (aunque si lo desea, podría hacer que una ruta a un archivo WAR real o completar el árbol de guerra explotado).

+0

sí, eso es lo que terminé haciendo. y funciona bien –

+0

(¡y es rápido! ¡Excelente para pruebas de "unidad" que realmente son más que pruebas unitarias!) - gracias por actualizar esta publicación por cierto. –

Cuestiones relacionadas