在应用程序部署期间减少注释搜索
包含许多类并启用注释处理的企业应用程序(未标记为元数据完整
)需要额外的时间来部署。 需要额外的时间来扫描应用程序二进制文件以查找由以下程序引入的注释: 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
属性可以指定为amm.filter.properties在应用程序服务器根目录/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 包。