2013-07-23 18 views
6

Io attualmente bisogno di creare un server per eseguire una serie di test di unità. Per semplificare questo processo vorrei incorporare Tomcat nel mio codice e caricare un'istanza di Tomcat (che a sua volta carica il mio file WAR) prima di eseguire il test dell'unità (usando la notazione @BeforeClass).Deploy WAR in Tomcat incorporato 7

Il mio problema è come posso distribuire il mio file WAR nel Tomcat incorporato?

Come si può notare, non posso utilizzare il plug-in Maven di tomcat poiché desidero che venga eseguito con i test automatici.

+0

Avete controllato [questo] (https://forums.oracle.com/thread/2348024)? – NREZ

risposta

5

Questo codice funziona con Tomcat 8.0:

File catalinaHome = new File("..."); // folder must exist 
Tomcat tomcat = new Tomcat(); 
tomcat.setPort(8080); // HTTP port 
tomcat.setBaseDir(catalinaHome.getAbsolutePath()); 
tomcat.getServer().addLifecycleListener(new VersionLoggerListener()); // nice to have 

Ora avete due opzioni. distribuire automaticamente qualsiasi applicazione web in catalinaHome/webapps:

// This magic line makes Tomcat look for WAR files in catalinaHome/webapps 
// and automatically deploy them 
tomcat.getHost().addLifecycleListener(new HostConfig()); 

Oppure è possibile aggiungere manualmente gli archivi di guerra. Nota: possono essere ovunque sul disco rigido.

// Manually add WAR archives to deploy. 
// This allows to define the order in which the apps are discovered 
// plus the context path. 
File war = new File(...); 
tomcat.addWebapp("/contextPath", war.getAbsolutePath());