Java EE 5 支持使用注释来指定部署信息。
当应用程序中包含大量 Java 类时,用于部署注释的处理时间可能会增加。
要将对性能的影响降到最低程度,可以使用下列其中一种方法:
- 确定模块是否需要使用 Java EE 5。如果模块不需要使用 Java EE 5,那么不会对 Java 类中的注释进行扫描。
- 请改用
metadata-complete
模块描述符中的属性 (如果模块使用 Java EE 5 并且不包含任何注释)。
此属性将禁止对模块进行注释处理,但是 Java EE 5 模块可能仍然置于描述符文件中。
如果您正在迁移应用程序,但是未添加注释,那么可考虑使用此属性值。
- 如果实用程序 Java 归档 (JAR) 文件中不包含注释信息,那么重构应用程序以将这些 JAR 文件放入共享库中。
如果您无法设置 metadata-complete 属性,请考虑使用此方法。
- 将 WEB-INF\lib 目录中的 JAR 文件移至企业归档 (EAR) 文件的根目录。
对嵌套的归档(例如,JAR 文件包含在 Web 归档 (WAR) 文件中,而此 WAR 文件又包含在一个企业应用程序归档 (EAR) 文件中)进行全面搜索非常缓慢而低效,这是因为它们进行了多级压缩。
可以在 ejb-jar.xml 或者 web.xml 部署描述符文件中定义 metadata-complete 标志。
例如,EJB 模块部署描述符会将 metadata-complete 属性定义为:
<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation= "http://java.sun.com/xml/ns/javaee"
http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
version= "3.0" metadata-complete = "true">
</ejb-jar>
Web 模块部署描述符会将 metadata-complete 属性定义为:
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns= "http://java.sun.com/xml/ns/javaee"
xmlns:web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation= "http://java.sun.com/xml/ns/javaee"
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID "version="2.5" metadata-complete = "true">
</web-app>
有关其他信息,请参阅 Metadata for module settings。