2012-01-29 10 views
10

最近Tomcat 6ではなく、Tomcat 6を組み込みテストに組み込みました。パフォーマンスはTomcat 6が埋め込まれている場合に比べて非常に遅いです。サーバーの起動には20秒程度かかります。埋め込みTomcat 7 Tomcat 6との比較が遅い

Tomcat tomcat = new Tomcat(); 
tomcat.setPort(port); 
tomcat.setSilent(true); 

tomcat.setBaseDir("."); 
tomcat.getHost().setAppBase(webappDir); 

tomcat.addWebapp(context, "");  
tomcat.start(); 

は、誰がこれを経験したり、パフォーマンスを向上させるための提案を持っている:これは私が使用しているコードのですか?私はWindows 7、Linux Mint、Ubuntuでテストを行っています。

+3

あなたは*だけ*長い起動時間であることを意味しますか? (これは通常、数日、数週間、または数ヶ月間、再起動することなく動作すると予想されるサーバのパフォーマンスのかなり狭い測定値です) –

+0

代わりに埋め込みJettyを使用することをお勧めします。私は埋め込まれたTomcatを試していないが、Jettuは十分に速く走っている。 – Anton

+1

Jon、埋め込まれているので、スタートアップ時間が重要です。 1つは、エンベデッドサーバが通常のサーバよりやや軽いことを望むだろう。 –

答えて

15

おそらくServlet 3.0のアノテーションベースの設定に必要なクラスパススキャンのために遅いかもしれません。これらの機能が必要ない場合は、web.xmlmetadata-complete="true"を追加してください。

+1

うん、それでした!起動時間が6秒に短縮されました: –

+0

私のためにも動作します。素晴らしい答え、ありがとう。 – Danijel

+1

これはアノテーションベースの設定を完全に無効にしますか?または、「スキャン」を無効にするだけですが、アノテーションベースの設定は引き続き機能しますか? – ziggy

5

これは、実際にweb.xmlのヘッダにどのように見えるかです:ここ

<?xml version="1.0" encoding="UTF-8"?> 
<web-app metadata-complete="true" id="WebApp_ID" version="3.0"... 

いくつかの詳細情報:Tomcat and Servlet 3.0 Web Configuration

関連する問題