在应用程序部署期间减少注释搜索
对于包含许多类并且针对注释处理(未标记为“metadata-complete”)启用的企业应用程序,其部署可能需要额外的时间。在应用程序二进制文件中扫描由 Java™ EE 5 引入的注释需要额外的时间。如果没有用于限制所扫描的类的其他选项,那么为某个模块启用扫描后,必须扫描该模块中的所有类。即使给定模块中只有一小部分类具有注释,也必须对所有类进行扫描。
开始之前
快速字节码扫描技术用于提高部署性能。但是,更高的部署性能通过限制对其进行注释扫描的类实现。
将某个模块标记为 metadata-complete 时,此属性将应用于整个模块。需要注释处理时,无法将模块标记为 metadata-complete。另外,将模块标记为 metadata-complete 可以阻止扫描模块,这会导致使用 EJB 或 Web Service 注释的 Web 模块发生问题。
Web 模块归档的 JAR 文件(WAR 文件)可能会移至应用程序库文件夹。但是,可能无法移动 WAR 文件,其原因在于移动 WAR 文件可能会中断 Web 模块封装,或者存在多个需要不同 JAR 文件的模块。
要克服这些限制并缩短部署时间,IBM® WebSphere® Application Server 提供了一些选项,用于限制对其进行注释扫描的类。
在产品服务器上安装支持 Java Platform, Enterprise Edition (Java EE) 5 或更高版本的应用程序。如果部署速度极慢且您计划将来再次部署此应用程序,并且应用程序包含启用注释处理的模块,请完成本主题中的过程以减少对其进行注释扫描的类的数目。
关于此任务
该产品提供可配置过滤功能以减少针对注释搜索的类数。可以通过四个属性(或清单属性)来标识要忽略注释处理的模块或 Java 包:
- Ignore-Scanning-Archives
- Ignore-Scanning-Packages
- Include-Scanning-Archives
- Include-Scanning-Packages
属性可以在 app_server_root/properties 中的 amm.filter.properties 内指定,也可以指定为清单属性。
- com.ibm.ws.amm.scan.context.filter.archives
- com.ibm.ws.amm.scan.context.filter.packages
- com.ibm.ws.amm.scan.context.include.archives
- com.ibm.ws.amm.scan.context.include.packages
使用这些选项以限制进行注释扫描的类。性能的提升与除去的类数成比例。从处理中除去所有不包含任何注释数据的类。
通常,过滤是在整个归档中完成的。一种常见的过滤情况是,过滤 WAR 中不包含任何注释数据的实用程序 JAR 文件。)
Ignore-Scanning-Archives 和 Ignore-Scanning-Packages 属性用于指定要在注释处理期间忽略的一部分类。在注释处理期间,将跳过归档中由 Ignore-Scanning-Archives 指定的所有类。并且,在注释处理期间,将跳过包中由 Ignore-Scanning-Packages 指定的所有类。
Include-Scanning-Archives 和 Include-Scanning-Packages 属性用于指定要在注释处理期间扫描的一部分类。 指定了两个属性之一时,仅扫描所包含的那些类;将忽略所有其他类。
这些属性值同时提供对注释处理范围的粗粒度控制和细粒度控制,其中 Ignore-Scanning-Archives 提供比 Ignore-Scanning-Packages 更粗的粒度控制,同样,Include-Scanning-Archives 提供比 Include-Scanning-Packages 更粗的粒度控制。
所有四个属性的语法都遵循逗号分隔值约定。不允许使用通配符或正则表达式,并且值是区分大小写的。
同时使用包含和排除属性不常见,但支持此用法。如果同时指定了包含属性和排除属性,那么在包含且未排除类的情况下,将选择这些类进行处理。如果同时指定了 Ignore-Scanning-Archives 和 Include-Scanning-Archives,那么在注释处理期间将扫描某个类,但执行此操作的前提条件是该类位于 Include-Scanning-Archives 所指定的归档内,而不在 Ignore-Scanning-Archives 所指定的归档内。同样地,如果同时指定了 Ignore-Scanning-Archives 和 Include-Scanning-Packages,那么在注释处理期间将扫描某个类,但执行此操作的前提是该类位于 Include-Scanning-Packages 所指定的数据包内,而不在 Ignore-Scanning-Packages 所指定的归档内。
对于概要文件,使用 amm.filter.properties 文件指定的选项是全局选项。由该概要文件启动的进程所遇到的所有应用程序都使用这些指定选项。对于在其上设置了属性的进程,指定为系统属性的选项是全局选项。进程所遇到的所有应用程序都使用这些指定选项。
- 应用程序(EAR 文件)
- 模块(WAR/RAR/JAR 文件)
- Web 片段(JAR 文件)
在多个范围指定的清单属性可以进行叠加。使用 amm.filter.properties 指定的选项、系统属性和清单属性可以进行叠加。
缺省值集合可以由管理员进行更改,也可以使用下列其中一个步骤进行扩充。
过程
下一步做什么
再次安装该应用程序。如果部署速度仍然很慢,请指定要忽略的其他模块和 Java 包。