Annotations 设置元数据完成后如何处理批注=";“真的”;(哪个解决了Tomcat 7启动缓慢的问题)?
在web.xml中将“metadata complete”设置为“true”似乎可以解决Tomcat 7启动缓慢的问题,如下所示:Annotations 设置元数据完成后如何处理批注=";“真的”;(哪个解决了Tomcat 7启动缓慢的问题)?,annotations,tomcat7,servlet-3.0,Annotations,Tomcat7,Servlet 3.0,在web.xml中将“metadata complete”设置为“true”似乎可以解决Tomcat 7启动缓慢的问题,如下所示: <?xml version="1.0" encoding="UTF-8"?> <web-app metadata-complete="true" id="WebApp_ID" version="3.0"... 我很困惑-设置元数据complete=“true”后,我的代码还能工作吗?我是否必须删除注释并将所有内容移动到web.xml中 之所以启动
<?xml version="1.0" encoding="UTF-8"?>
<web-app metadata-complete="true" id="WebApp_ID" version="3.0"...
我很困惑-设置元数据complete=“true”后,我的代码还能工作吗?我是否必须删除注释并将所有内容移动到web.xml中 之所以启动缓慢,是因为
/WEB-INF/lib
中每个JAR文件中的每个类文件都会被扫描,以查找Servlet 3.0特定的注释。显然,在/WEB-INF/lib
中有很多(大)JAR文件
metadata complete=“true”
表示不需要扫描/WEB-INF/lib
中的JAR文件以查找Servlet 3.0特定的注释,但仍将扫描webapp自己的类
注意,这里列出了两个JSF注释和一个JavaSE注释,而不是任何Servlet3.0注释。Servlet 3.0注释列在包中。只有当JAR文件包含与JSF2.0兼容的/META-INF/faces config.xml
文件时,JSF才会扫描注释。它不会立即扫描每个JAR文件中的每个类。JavaSE注释不是运行时注释,而是编译时辅助工具
另见:
话虽如此,但为了回答您的问题:是的,为了优化Tomcat的启动时间,您需要使用
metadata complete=“true”
并将每个Servlet、过滤器或侦听器放在部署描述符中。非常感谢–错过了只有JAR文件不会扫描注释的部分(到目前为止,我还认为metadata complete=“true”
也会影响web应用程序的类)。这将我的启动时间减少了50%,从~110减少到~55。为什么默认情况下是错误的?有没有我可能忽略的副作用?@Danijel这对你有什么影响?@mattblang:JSF工件(自定义)标记/组件库将不再自动注册。在适用的情况下,您需要自己显式注册它们。@mattblang对我来说?BalusC的回答救了我一命!我不记得了,但速度提高非常快。@BalusC我们的应用程序包含大量JAR文件。我如何知道哪些文件需要显式注册如果有的话,是否注册?
@ManagedBean
@RequestScoped
@Override
...