我正在尝试 Tomcat 7.0 和 Servlet API 3.0。
我有一个 Servlet API 2.5 的应用程序。因此,我编辑了 web.xml 以将其配置为 Servlet API 3.0。更改后,Tomcat 的启动时间增加了 14 秒。
所以我设置了 并且 Tomcat 的启动时间恢复正常,因为 tomcat 不会扫描每个类的注释。这很好,但是 web-fragment.xml 功能也因此被禁用。
我想知道是否可以禁用 Tomcat 的注释扫描,但启用 web-fragment.xml 的处理。
I am giving a try on Tomcat 7.0 and Servlet API 3.0.
I had an application for Servlet API 2.5. So I edited web.xml to configure it for Servlet API 3.0. After the change the start time of Tomcat increased by 14 seconds.
So I set <web-app metadata-complete="true" ...
and the start time of Tomcat got back to normal, because tomcat does not scan every class for annotations. This is good, but web-fragment.xml feature is also disabled by this.
I wonder if it possible to disable annotation scanning of Tomcat, but to enable processing of web-fragment.xml.
发布评论
评论(2)
考虑在 web.xml 中使用“absolute-ordering”元素。
Servlet API 3.0 Final Spec 在第 8.2.2 节“web.xml 和 web-fragment.xml 的顺序”中描述了它的用法。
您可以指定要处理的确切 Web 片段,禁用 Web 片段的 jar 中类的注释处理(列表中 Web 片段中的“元数据完整”),当然还可以排除其他 jar通过这种网络片段包含进行处理。
Consider using 'absolute-ordering' element in your web.xml.
Servlet API 3.0 Final Spec describes it's usage in section 8.2.2 "Ordering of web.xml and web-fragment.xml".
You can specify the exact web-fragments to be processed, disable annotations processing of classes in web-fragment's jar ('metadata-complete' in the web-fragment from the list) and of course exclude other jars from processing by this kind of web-fragment inclusion.
片段和注释都是应用程序的元数据。 因此元数据完整适用于注释处理和片段处理。
如果为web.xml设置了metadata-complete,则注释处理和片段处理都会被禁用。
但是,metadata-complete 也可以设置为 web-fragments.xml。因此,我们可以对注释和片段进行选择性处理。
在 web.xml 上启用元数据完整并在 web-fragments.xml 上禁用将处理片段,但会禁用 web-fragments.xml 下类的注释处理
Both fragments and annotations are metadata of the application. Thus metadata-complete applies for both annotation processing and processing of fragments.
If the metadata-complete is set for web.xml, both the annotation processing and fragments processing are disabled.
But, the metadata-complete can also be set to web-fragments.xml. So, one can do selective processing of annotations and fragments.
Enabling metadata-complete on web.xml and disabling on web-fragments.xml will process fragments but disables the annotation processing of classes under web-fragments.xml