2011-01-19 39 views
17

我正在尝试Tomcat 7.0和Servlet API 3.0。禁用注释处理,但在servlet api 3.0(Tomcat7)中启用web-fragments功能

我有一个Servlet 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的处理。

+1

增加了14秒多少?如果开始3分钟,14秒就可以了。 – Bozho 2011-01-19 09:06:55

回答

3

这两个片段和注释都是应用程序的元数据。 因此,metadata-complete适用于注释处理和片段处理。 如果为web.xml设置了metadata-complete,则注释处理和片段处理均被禁用

但是,metadata-complete也可以设置为web-fragments.xml。所以,可以对注释和片段进行选择性处理。

启用元数据完整web.xml上和禁用在纸幅fragments.xml将处理片段但在web的fragments.xml

+0

我测试了它,它似乎在Tomcat 7.0.22中不起作用。顺便说一下,我不太明白,如果我在web.xml上启用元数据完成,应用程序服务器将跳过注释处理和碎片处理。在这种情况下,web-fragments.xml中的配置如何工作?它甚至不能被解析,对吗? – cn1h 2012-04-02 08:06:31

3

考虑使用“绝对排序”元素禁用类的注释处理在你的web.xml中。 Servlet API 3.0最终规范在第8.2.2节“订购web.xml和web-fragment.xml”中描述了它的用法。

您可以指定准确的要处理的Web片段,禁用Web片段的jar中的类的注释处理(来自列表的Web片段中的'metadata-complete'),当然也可以排除其他jar通过这种网页碎片包含进行处理。