2013-07-23 16 views
6

Şu anda bir dizi birim testi çalıştırmak için bir sunucu oluşturmanız gerekiyor. Bu süreci basitleştirmek için, Tomcat'i koduma gömmek ve birim testini çalıştırmadan önce (@BeforeClass gösterimini kullanarak) bir Tomcat örneğini (buna karşılık WAR dosyamı yükler) yüklemek istiyorum.WAR'i yerleşik Tomcat uygulamasında dağıtın

Sorunum, WAR dosyamı katıştırılmış Tomcat'e nasıl dağıtabilirim?

Otomatik testlerle çalışmasını istediğimden, tomcat maven eklentisini kullanamayacağımı fark edebilirsiniz.

+0

Burayı (https://forums.oracle.com/thread/2348024) kontrol ettiniz mi? – NREZ

cevap

5

Bu kod Tomcat 8.0 ile çalışır:

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 

Şimdi iki seçenek var.

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

Ya elle SAVAŞ arşivleri ekleyebilirsiniz: Otomatik olarak catalinaHome/webapps herhangi bir web uygulaması dağıtın. Not: Sabit diskte herhangi bir yerde olabilirler.

// 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());