19

Tomcat 7.0 と Servlet API 3.0 を試しています。

サーブレット API 2.5 のアプリケーションがありました。そこで、web.xml を編集して Servlet API 3.0 用に構成しました。変更後、Tomcat の起動時間が 14 秒増加しました。

そこで<web-app metadata-complete="true" ...、Tomcat がすべてのクラスでアノテーションをスキャンするわけではないため、設定すると Tomcat の開始時間が通常に戻りました。これは良いことですが、これにより web-fragment.xml 機能も無効になります。

Tomcat のアノテーション スキャンを無効にして、web-fragment.xml の処理を​​有効にすることは可能でしょうか。

4

2 に答える 2

5

web.xml で「absolute-ordering」要素を使用することを検討してください。サーブレット API 3.0 最終仕様では、セクション 8.2.2「web.xml と web-fragment.xml の順序付け」でその使用法について説明しています。

処理する正確なWeb フラグメントを指定し、 Web フラグメントの jar 内のクラスの注釈処理を無効にし (リストの Web フラグメント内の「metadata-complete」)、もちろん、この種の Web による処理から他の jar を除外できます。 -フラグメントの包含。

于 2013-09-20T15:18:44.553 に答える
4

フラグメントと注釈はどちらもアプリケーションのメタデータです。したがって、metadata-complete は、アノテーション処理とフラグメント処理の両方に適用されます。 web.xml に metadata-complete が設定されている場合、アノテーション処理とフラグメント処理の両方が無効になります

ただし、me​​tadata-complete を web-fragments.xml に設定することもできます。したがって、注釈とフラグメントの選択的な処理を行うことができます。

web.xml で metadata-complete を有効にし、web-fragments.xml で無効にすると、フラグメントは処理されますが、web-fragments.xml の下のクラスの注釈処理は無効になります。

于 2011-05-31T10:14:23.433 に答える