应用程序概要分析
可以使用应用程序概要分析功能来向产品运行时环境标识特定工作单元。运行时可定制其对此工作单元确切需求的支持。
应用程序概要分析需要精确了解应用程序的事务配置和在每个事务的发展期间应用程序与其持久状态的交互。
您可以按“封闭世界”或“开放世界”方式执行分析。 封闭世界分析会假定所有可能的应用程序客户机都包含在分析中,而且作为结果的分析是完整和正确的。封闭世界分析的结果会报告可以由 Web、JMS 或应用程序客户机调用的所有事务的集合。这些结果将排除许多从不在运行时执行的潜在事务。
开放世界分析会假定不是所有的客户机都可用于分析或分析无法返回完整或精确的报告。开放世界分析会返回可能的事务的完整集合。
分析结果存留为应用程序概要分析配置。组装工具可建立 Servlet、JavaServer Pages (JSP) 文件、应用程序客户机和消息驱动的 Bean (MDB) 的容器管理的任务。这些任务的应用程序概要文件与实体的适当访问意向一起构造,这些实体在任务表示的事务中获得。但是,实际上存在许多工具通常返回不完整结果的情况。不是所有的应用程序都有义务进行静态分析。某些工厂和命令模式使确定调用图变得不可能。此工具不会支持分析 ActivitySession。
您应该非常仔细地检查分析结果。在许多情况下,您必须手动修改这些分析结果以满足应用程序的需求。但是,此工具对于大多数应用程序可以是有效的开始地方,并可以为某些应用程序提供应用程序概要文件的完整和快速配置。
访问意向是唯一使用应用程序概要分析功能的运行时组件。例如,您可配置一个事务装入一个实体 Bean,带有强大更新锁定,并配置另一个事务装入同一实体 Bean,但是没有锁定。
- 任务
- 任务是工作单元的可配置名称。在此情况下,工作单元意指事务或 ActivitySession。任务名通常在可以启动工作单元的 J2EE 组件上声明指定。大多数情况下,任务在为容器管理的事务或 Bean 管理的事务声明的 Enterprise JavaBeans 文件的方法上配置。在已配置任务的范围中开始的任何工作单元与此任务名关联。工作单元只能在启动时命名,而且此名称在此工作单元的生存期内不能更改。工作单元在开始后忽略任何时候的任何后继任务名配置。任务在其工作单元持续时间内用于标识特定于此工作单元的已配置策略。注: 如果您在“应用程序概要文件服务的控制台”页面上选择 5.x 兼容性方式属性,那么 J2EE 1.3 应用程序上配置的任务不需要与工作单元关联,而且可任意被应用或覆盖。这不是建议的操作方式,而且可能导致数据库访问期间的意外死锁。对于在 Application Profiling 5.x 兼容性方式下运行的应用程序和不在兼容性方式下运行的应用程序之间的请求,任务不进行通信。
要让 V6.x 客户机与 Application Profiling 5.x 兼容性方式下运行的应用程序进行交互,必须将客户机进程中的 appprofileCompatibility 系统属性设置为 true。您可通过在调用 launchClient 命令时指定 -CCDappprofileCompatibility=true 选项来完成此任务。
- 概要文件
- 概要文件只是任务到实体 Bean 上所配置的一组访问意向策略的映射。当 Bean 上的调用(通过 finder 方法、CMR 获取方法 (getter) 或动态查询)需要从后端系统检索数据时,与请求关联的当前任务用于确定事务的确切需求。相同的 Bean 在任务到概要文件映射的环境中以不同的方式装入和运行。每个概要文件为开发者提供重新配置应用程序访问意向的机会。如果请求在缺少任务的情况下操作,那么运行时环境使用方法级别访问意向(如果有的话)或 Bean 级别缺省访问意向。注: 应用程序概要文件配置是具有应用程序范围的配置数据。如果任何 Enterprise JavaBean (EJB) 模块包含应用程序概要文件配置,应用程序概要分析服务就会隐式地对所有其他 EJB 模块进行调节,即使他们未包含应用程序概要文件配置数据亦如此。
例如,某个应用程序包含两个 EJB 模块:EJBModule1 和 EJBModule2。
EJBModule1 包含名为 AppProfile1 的应用程序概要文件。此 AppProfile1 是由名为 task1 的任务注册的。这个 task1 将成为应用程序的已知任务,此任务在与此应用程序中的工作单元相关联时将被执行。如果存在任何“应用程序的已知任务”,就会忽略方法级别访问意向配置,并且仅应用 Bean 级别访问意向配置。
EJBModule2 未包含应用程序概要文件配置数据。未显式地对所有实体 Bean 进行 Bean 级访问意向配置,但某些方法带有方法级别访问意向配置。如果在与 task1 相关联的工作单元中装入了 EJBModule2 中的实体 Bean,就会应用 Bean 级访问意向配置,并且将忽略方法级别访问意向配置。由于未显式地设置 Bean 级访问意向,所以将应用缺省 Bean 级访问意向,即 wsPessimisticUpdate-WeakestLockAtLoad。