Pergunta

OK este é tipo de relacionados com: Usando cais para instalar e executar testes de servlet programaticamente

tem grandes respostas lá, e foram capazes de carregar servlets programaticamente e todos os seus feito de impressionante.

O que eu gostaria de fazer, porém, é carregar um web.xml em um teste (todos no classpath) e executá-lo de um servidor (usando o classpath atual) - que já vi em docs como apontá-lo para um diretório para fazer isso, mas eu quero trabalhar fora do classpath (melhor para nos testes lugar). Essencialmente validar meu web.xml.

(não é relevante, mas este aplicativo está em scala, mas tive nenhum problema com isso, tudo funciona como anunciado).

Foi útil?

Solução

Parece que o que você quer fazer é carregar uma aplicação web adequado programaticamente, ao contrário de carregamento servlets individuais (e eu acho que você quer fazê-lo sem ter um arquivo WAR completo para trabalhar a partir de).

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

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

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

O truque é que o /path/to/somewhere deve conter um diretório WEB-INF e seu arquivo web.xml deve viver lá dentro. necessidades nada mais para viver dentro dessa estrutura de diretórios, como tudo o resto pode ser carregado automaticamente de seu classpath (embora se você queria, você poderia fazer que um caminho para um arquivo WAR real ou completa explodiu WAR árvore).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top