2013-07-23 20 views
6

私は現在、いくつかのユニットテストを実行するためにサーバを作成する必要があります。このプロセスを単純化するために、単体テスト(@BeforeClass表記を使用)を実行する前に、Tomcatを自分のコードに埋め込み、TomcatのインスタンスをロードしてWARファイルをロードします。埋め込みTomcat 7にWARをデプロイ

私の問題は、WARファイルを埋め込みTomcatにどのように配備できますか?

気付いたように、私はtomcat mavenプラグインを自動化されたテストで実行したいので、使用できません。

+0

[this](https://forums.oracle.com/thread/2348024)にチェックしましたか? – NREZ

答えて

5

このコードは、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 

あなたは今、2つのオプションがあります。自動的catalinaHome/webapps内の任意のWebアプリケーションをデプロイします

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

それとも、手動でWARアーカイブを追加することができます。注:ハードディスク上のどこにでも置くことができます。

// 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()); 
関連する問題