Sun Identity Manager 8.1 发行说明

第 7 章 文档补充和更正

本节包括发布 Identity Manager 8.1 文档集后所需的新信息以及更正的信息。

此信息分为以下几个部分:

Identity Manager 8.1 业务管理员指南

本节包含《Sun Identity Manager 8.1 Business Administrator’s Guide》的新信息和文档更正内容:

将在“安全性”一章中添加以下信息:

Identity Manager 8.1 系统管理员指南

本节提供《Sun Identity Manager 8.1 System Administrator’s Guide》的新信息和文档更正内容。

该信息包括以下内容:

旧软件包名称 

新软件包名称 

com.waveset.adapter.ADSyncFailoverTask 

com.waveset.task.ADSyncFailoverTask 

com.waveset.adapter.ADSyncRecoveryCollectorTask 

com.waveset.task.ADSyncRecoveryCollectorTask 

com.waveset.adapter.SARunner 

com.waveset.task.SARunner 

com.waveset.adapter.SourceAdapterTask 

com.waveset.task.SourceAdapterTask 

Identity Manager 8.1 部署指南

本节包含 《Sun Identity Manager Deployment Guide》的新信息和文档更正内容。

系统配置对象文档更改

系统配置对象说明应包含有关下列属性的以下信息:

ProvisioningDisabledUserShouldThrow – 如果设置为 true,则任何向资源置备已禁用用户的尝试都将被禁止并产生错误。如果未将该属性设置为 true,仍会禁止该置备操作,但不会产生错误。(ID-20064)

security.delegation.historyLength – 控制记录的先前委托数。(ID-13331)

runPasswordLoginOnSuccess – 如果设置为 true,在用户通过回答验证问题成功登录时,Identity Manager 将运行密码登录工作流。该属性的默认值为 false。(ID-10030)

PasswordSyncThreshold - 如果为某个资源启用了密码同步,并且 Identity Manager 还可以为该资源启动密码更改,则可以使用此设置来帮助阻止环回密码更改。(ID-7887) 在从 Identity Manager 中启动密码更改时,它将在资源上设置密码,并且 PasswordSync 库会向 Identity Manager 通知更改情况。然后,Identity Manager 将用户对象上的 lastPasswordDate 与当前时间进行比较。如果该差值小于 PasswordSyncThreshold,Identity Manager 将忽略密码更改。这样,便可适当忽略多余或不必要的密码更改。

PasswordSyncResourceExcludeList - 列出应始终从同步中排除的资源名称。(ID-3275)

process.handleNativeChangeToAccountAttributes – 如果设置为 true,则启用属性值审计。默认情况下,此属性处于禁用状态。(注意:这会为协调进程和置备程序启用属性值审计。)(ID-3275)

sources.subject – 为被指定为源适配器任务所有者的管理员指定登录名。(ID-19694)

sources.host – 指定运行源适配器任务的服务器。

security.saveNoValidateAllowedFormsAndWorkflows – 列出将作为 SaveNoValidate 操作处理的表单和工作流的 ID。所有其他表单和工作流都将作为 Save 处理。如果不存在该列表,则对于所有表单和工作流,行为将保持一致(将所有表单和工作流作为 SaveNoValidate 处理)。(ID-19474)

数据导出器更改

数据导出器提供了一种方法,可定期将 Identity Manager 管理或已处理的数据导出到一组 DBMS 表中,以进一步进行处理。导出过程允许进行自定义,某些自定义可能需要手动干预才能正常运行。适当保留和更新了与数据导出器有关的 Identity Manager 配置对象。不过,某些导出器自定义是在 Web 应用程序的文件中完成的,这些自定义需要进行特殊处理。

在升级过程中,Identity Manager 将覆盖 $WSHOME$WSHOME/exporter 目录中所有未修改的数据导出器文件。如果更改了任何数据导出器文件,则升级过程将在原地保留修改的版本,并在 $WSHOME/patches/Identity_Manager_8_1_0_0_ Date/filesNotInstalled 中安装新版本的文件。如果要将新功能与自定义合并在一起,您必须手动执行此操作。

请注意,通常会自定义 $WSHOME 中的以下文件:

model-export.dtd
model-export.xml
model-export.xsl
exporter/exporter.jar
exporter/create_warehouse.*
exporter/drop_warehouse.*
exporter/hbm/*.hbm.xml

根据您是否在 8.0 中自定义了数据导出器以及您对于 8.1 中数据导出器的规划,必须执行的升级步骤会有所不同

在安装 8.1 后,如果部署了 8.1 版的 model-export.xml,可通过查看以下位置中的模式文件来查看新的数据类型和属性:http://server: port/idm/model-export.xml。新的类型和属性将带有 8.1 版本号标记。

Identity Manager 8.1 部署参考

本节包含 《Sun Identity Manager Deployment Reference》的新信息和文档更正内容。

与表单有关的文档问题

本章缺少有关在表单中添加密码确认质询的以下说明:(ID-7604)

您可以使用 RequiresChallenge 表单属性将密码确认质询添加到所选表单中。如果启用此功能,在处理请求之前,Identity Manager 将向当前登录的管理员提出质询,要求其提供密码。支持此选项的表单包括:

userForm(选项卡式用户表单、向导用户表单和默认用户表单)

changePassword(默认为更改用户密码表单)

resetPassword(默认为重置用户密码表单)

将为每个表单指定不同的属性值。

为用户表单设置 RequiresChallenge 属性

要将密码确认质询添加到用户表单中,请添加以下 RequiredElement 元素(如下所示),并使用相应的值替代 password、email 和 fullname:


<Property name='RequiredChallenge'>
    <List>
      <String>password</String>
      <String>email</String>
      <String>fullname</String>
    </List>
</Property>

该属性的值是由一个或多个下列用户视图属性名称组成的列表:applications、adminRoles、assignedLhPolicy、capabilities、controlledOrganizations、email、firstname、fullname、lastname、organization、password、resources、roles。

为更改密码表单和重置密码表单设置 RequiresChallenge 属性

要将密码确认质询添加到 changePassword 或 resetPassword 表单中,请添加以下 <RequiresChallenge> 元素(如下所示),并使用相应的值替代 password、email 和 fullname:

<Property name='RequiresChallenge' value='true'/>

其中,该属性的值可以是 "true" 或 "false"。

如果在表单中将该属性设置为 "true",则 Identity Manager 将质询请求更改的当前管理员,要求其输入用于登录到 Lighthouse 的密码。如果质询失败(即,未输入当前管理员的密码),Identity Manager 将不允许进行更改。如果质询成功,Identity Manager 将允许继续执行更改请求。两个密码管理表单均支持使用 'RequiresChallenge' 表单属性。如果将此属性设置为 true,在指定新密码后,系统将提示用户输入旧密码。

覆盖版本信息

您可以创建两个自定义消息目录关键字,以禁止 Identity Manager 在用户将光标放在帮助按钮上时显示版本信息。UI_END_USER_VERSION 关键字在最终用户界面上隐藏版本信息;而 UI_VERSION 关键字则用于管理员界面。

如果将该关键字的值设置为空字符串,则会禁止显示任何版本信息。

以下示例禁用了两个界面的版本信息。

<Waveset>
   <Configuration name="sampleCustomCatalog">
      <Extension>
         <CustomCatalog id="defaultCustomCatalog" enabled="true">
            <MessageSet language="en" country="US">
               <Msg id="UI_END_USER_VERSION"></Msg>
               <Msg id="UI_VERSION"></Msg>
            </MessageSet>
         </CustomCatalog>
      </Extension>
   </Configuration>
</Waveset>

与表单有关的其他问题

“表单”一章缺少以下讨论:(ID-18869)

默认情况下,有两种更改密码表单实现:

最终用户密码更改表单是默认密码更改表单。它提供了一组简单的字段,用户可以使用这些字段更改其密码。将聚集并汇总分配给用户的所有资源的密码策略,并且 Identity Manager 会将密码更改应用于所有分配的资源。

管理员界面和用户界面上都提供了基本更改密码表单。它提供了分配给用户的资源的相关信息,并且允许用户单独选择 Identity Manager 将在其上更改密码的资源。

两个密码管理表单均支持使用 'RequiresChallenge' 表单属性。如果将此属性设置为 true,在指定新密码后,系统将提示用户输入旧密码。

工作流和表单的共有问题

本指南的“表单和工作流”一章缺少有关为 <Variable> 元素分配范围的以下讨论:(ID-14915)

在声明该元素时,Identity Manager 会为所有 <Variable> 元素分配范围。如果没有为 scope 属性分配值,Identity Manager 将为其分配值 local,这意味着只能在声明该变量的 XPRESS 部分中访问它。

定义范围的其他变量属性包括:

input -- 声明 <Variable> 元素具有本地范围,并且调用方可以初始化该值。

output -- 声明 <Variable> 元素具有本地范围,但可以返回给调用方。

external -- 声明具有非本地范围的 <Variable>,即,如果为该变量分配值,则会导致在最初声明该变量的范围内进行分配。

本章缺少有关 Identity Manager 白名单功能的以下讨论。(ID-19474)

通过使用 Identity Manager 白名单功能,可以对照一个 ID 或表单名称列表检查使用 SaveNoValidate 操作的表单和工作流。Identity Manager 将在白名单中检查表单名称或表单所有者 ID。名为 saveNoValidateAllowedFormsAndWorkflows 的 ID 列表位于系统配置对象的 security 属性中。如果表单名称或所有者 ID 位于白名单中,则表单或工作流可以使用 SaveNoValidate 操作。如果表单名称或所有者 ID 不在该列表中,则使用 Save 操作处理表单或工作流。如果不存在该列表,则可以将所有表单和工作流都作为 SaveNoValidate 进行处理。

要在部署中实现此功能,您必须将所有使用 SaveNoValidate 的表单或工作流添加到系统配置对象的 saveNoValidateAllowedFormsAndWorkflows 列表中。要查看必须添加的 ID 或表单名称,请检查系统日志或为 com.waveset.ui.util.GenericEditForm 启用跟踪级别 4,然后提交使用 SaveNoValidate 的所有自定义表单或工作流。将记录一条包含 ID 的警告。如果系统日志中出现 "null" 表单名称,请确认运行的 TaskDefinition 中的表单具有名称属性。

与工作流有关的问题

“工作流”一章缺少有关 handleNativeChangeToAccountAttributes 工作流的以下讨论 (ID-3275):

只要 Identity Manager 检测到在本机对资源帐户的可审计属性值进行了更改(即,未通过 Identity Manager 执行的更改),它就会运行 handleNativeChangeToAccountAttributes 工作流以进行响应,该工作流与以下系统配置对象属性相关联:

<Attribute name='process'>
  <Object>
    <Attribute name='handleNativeChangeToAccountAttributes' value='Audit Native
      Change To Account Attributes'/>
  </Object>
</Attribute>

如果启用了“Lighthouse 之外的更改”审计过滤器,此工作流会将本机更改事件记录到事件日志中。否则,Identity Manager 将忽略该事件。警告:请注意从替换上面列出的默认工作流的任何工作流中调用的方法。

由于只要资源帐户提取涉及本机更改,Identity Manager 就会启动该工作流,因此,它不能调用将触发对相同资源帐户进行其他提取操作的任何方法或工作流。例如,如果调用下列任何组合用户视图的 WorkflowServices 方法,则会导致死循环:getView(User)、checkoutView(User),还可能包括 checkinView(User)。

由于 Identity Manager 通过运行工作流来处理每个本机更改,因此,您可以捕获本机更改事件以及处理该本机更改;不过,您也可以根据需要,替换默认本机更改工作流或在其中添加内容。例如,您可以选择将电子邮件发送到管理员或用户,在数据库中记录事件,将要撤消本机更改的更新排入队列,甚至提取该本机更改并将其应用于其他资源。

本指南的“工作流”一章缺少有关如何指定源适配器任务的主体或管理员的以下说明。(ID-19694)。

您可以将主体或管理员分配给源适配器任务,并通过编辑系统配置对象的以下属性来指定运行该任务的服务器。source.subject 为被指定为此任务所有者的管理员指定登录名。sources.host 指定运行任务的服务器。配置对象中的新值默认为:

<Attribute name='sources'>
           <Object>
             <Attribute name='hosts'/> <!-- any host is the default -->
           <Attribute name='subject' value='Configurator'/>
         </Object>
         </Attribute>

Identity Manager 8.1 资源参考

本节包含《Sun Identity Manager 8.1 Resources Reference》的新信息和文档更正内容。

Identity 连接器的讨论缺少有关 ConnectorAdapter 如何实现 run() 方法的以下信息:传递到 runResourceAction 服务的参数将作为直接脚本变量传送到脚本(在 ResourceAction 中定义)。(ID-19856)

Identity Manager 8.1 服务提供者部署指南

本节包含《Sun Identity Manager Service Provider 8.1 Deployment》的新信息和文档更正内容。

开发客户适配器

ResourceAttribute 元素可能包含 ValidationPolicy 元素。验证策略可确保用户在“资源参数”页上指定的值符合独立策略对象中定义的要求。

以下示例将使适配器使用端口策略确保指定的值是有效的。默认端口策略将检查该值是否为 1 到 65536 之间的整数。

<ResourceAttribute name=.Port. value=.123.>
   <ValidationPolicy>
      <ObjectRef type=.Policy. id=.#ID#PortPolicy. name=.Port Policy./>
   </ValidationPolicy>
</ResourceAttribute>

Identity Manager IDE 常见问题解答 (FAQ)

此常见问题解答回答了与使用 Identity Manager IDE 相关的一些常见问题。

该信息将分为以下几个部分:

使用 NetBeans

问题:

我应该使用哪个版本的 Netbeans?

回答:

应使用 Identity Manager 产品文档(针对您所使用的 Netbeans 插件版本提供)中提及的 Netbeans 版本。


注 –

始终使用所提及的正确版本,因为即使使用修补程序发行版也会造成主要功能无法使用。


问题:

Netbeans 插件以前工作正常,但在我进行了一些操作之后就不再正常工作了。产生此问题的原因是什么?

回答:

此问题通常是由 .netbeans 目录中的损坏文件引起的。通常来说,删除 .netbeans 目录,然后重新安装 NetBeans 插件就可解决此问题。(删除 .netbeans 目录可以有效地卸载 NetBeans 插件。虽然您会丢失所有的用户设置,但是项目内容是安全的。)

    具体步骤如下所示:

  1. 关闭 NetBeans。

  2. 删除 .netbeans 目录。

  3. 启动 NetBeans。

  4. 安装 NetBeans 插件。

  5. 重新启动 NetBeans。

使用项目

问题:

生成并运行项目花费了很长的时间,Identity Manager IDE 似乎在复制大量的文件。产生此问题的原因是什么?

回答:

此问题可能是由以下原因引起的:

问题:

现在我已经创建了 Identity Manager 项目,应将哪些文件签入到源控制中?

回答:

有关信息,请参见 Identity Manager IDE README.txt 中的“CVS 最佳实践”一节。

问题:

在 CVS 中使用项目管理的最佳实践是什么?

回答:

有关信息,请参见 Identity Manager IDE README.txt 中的“CVS 最佳实践”一节。

问题:

何时将对象导入到系统信息库中?

回答:

有关信息,请参见使用系统信息库

问题:

如何将新的 JAR 添加到项目中?

回答:

请参见 Identity Manager IDE README.txt 中的“如何添加新的 JAR 依赖关系”一节。

使用系统信息库

问题:

应将哪些系统信息库用于沙箱库?

回答:

将嵌入式系统信息库用于沙箱中 -- 特别是在使用 Identity Manager 7.1(或更高版本)时(它会提供一个 HsSQL 系统信息库)。如果不使用嵌入式系统信息库,则会丧失一些功能。

有关详细信息,请参阅 Identity Manager IDE README.txt 中的“使用系统信息库”一节。

问题:

何时会自动导入对象?

回答:

您必须将 Identity Manager IDE 配置为自动导入对象。

具体步骤如下所示:

  1. 从 "IdM" 菜单中选择“系统信息库”>“管理嵌入系统信息库”。

  2. 启用“管理嵌入系统信息库”对话框上的“自动发布 Identity Manager 对象”选项。


    注 –

    如果选择了“Identity Manager 项目(远程)”或指定了自己的系统信息库,则此选项不可用。


  3. 选择“项目”>“运行项目”,或选择“项目”>“调试项目”。

    Identity Manager IDE 会自动导入自上次运行该项目以来更改的所有对象。


    提示 –

    自动发布 Identity Manager 对象会增加启动服务器所需的时间。要缩短服务器启动时间,请禁用此选项并将对象显式上载到系统信息库。


问题:

上载对象最有效的方式是什么?

回答:

使用以下方法之一来上载修改过的对象:

上述两种方法都能将对象直接上载到服务器,因此不会出现缓存延迟问题,并且速度要比使用“运行项目”或“调试项目”快得多。无论使用什么系统信息库,都能使用“上载对象”功能。

使用 Identity Manager IDE 调试器


注 –

只要执行以下任一项目操作,Netbeans 的嵌入式应用服务器即会自动关闭:


问题:

Identity Manager IDE 调试器速度很慢。产生此问题的原因是什么?

回答:

提高调试器的性能:

问题:

我无法在调试器中设置断点。产生此问题的原因是什么?

回答:

在以下情况中将无法设置断点:

问题:

我在调试器中设置了断点,但在该断点处并未暂停。产生此问题的原因是什么?

回答:

请检查以下两项内容:

使用规则

问题:

在 Netbeans 中开发规则时,为何设计模式不可用于规则库?

回答:

可以从“项目”视图的资源管理器树中获取设计模式功能。使用以下步骤:

  1. 展开库节点,然后右键单击某个规则。

  2. 当显示弹出式菜单时,选择“属性”,然后单击“主体”。

本地化范围

以前,Identity Manager 不对资源对象和函数进行本地化,主要原因是这些对象和函数大多数都是在 Identity Manager 初始化期间加载(通过 init.xml)的样例,并且对象类型的属性在实际客户部署之间可能会有所不同(取决于自定义级别)。以下区域列表将有可能出现英文内容:(ID-16349)

使用 Identity Manager Profiler

Identity Manager 提供了 Profiler 实用程序,可以帮助您解决部署中遇到的表单、Java、规则、工作流以及 XPRESS 方面的性能问题。

表单、Java、规则、工作流以及 XPRESS 都会造成性能和伸缩问题。Profiler 将会分析这些不同区域所消耗的时间,从而可以确定这些表单、Java、规则、工作流或 XPRESS 对象是否产生了性能和伸缩问题,如果出现问题,将会进一步确定这些对象的哪些部分出现了问题。

本节将介绍如何使用 Identity Manager Profiler,并提供了一个教程,帮助您了解如何解决部署中存在的性能问题。

该信息分为以下几个主题:


注 –

仅在 7.1 Update 1 和更高版本上支持 Identity Manager Profiler。


概述

本节提供了 Identity Manager Profiler 功能的概述。信息通过以下方式进行组织:

主要功能

可以使用 Profiler 实用程序来执行以下操作

Profiler 查找和管理源的方式

本节介绍了 Profiler 如何查找和管理以下 Identity Manager 对象的源:


提示 –

在“调用树”视图或“热点”视图中,可以双击任何与 Java 方法、工作流、表单、规则或 XPRESS 对应的节点,以查看该节点的源。


对于表单、规则、工作流和 XPRESS 对象

在使用 Profiler 拍摄快照时,服务器会评估所有的性能分析数据并发现该数据所依赖的源。然后,服务器将从系统信息库中获取所有这些源,并将它们包含在快照中。因此,您可以确信显示在快照中的 Identity Manager 对象会准确地反映捕捉到该快照的那一刻的情况。

此过程会增加快照的大小,但相对来说,源大小实际上只是总大小的一小部分。因此,您可以将快照发送到 Sun 的客户支持部门,而不必单独发送源文件。

对于 Java 源

在拍摄 Java 源的快照时,客户机将下载该快照,然后仔细查看快照以便从项目中捕获所有引用的 Java 源。在保存快照时,客户机将压缩这些源并将其附加到快照的结尾处。

然后,在您查看快照并转至 Java 源时,客户机将首先检查快照的内容。如果客户机在该处找不到快照内容,则会检查项目的内容。此过程允许您发送包含性能分析数据(来自自定义 Java 代码和 Identity Manager 代码)的快照。


注 –

在 Java 源快照中,不能假定源相对于服务器而言是最新的或始终可用。


统计信息注意事项

以下各节包含评估 Profiler 提供的结果时要考虑的信息:

自用时间统计

要计算根节点的自用时间,Profiler 将从根节点的总时间中减去所有子节点的时间。

因此,未分析的子节点的时间会反映在根节点的自用时间中。如果根节点的自用时间很长,则应该查明原因。您可能没有分析适当的方法,因此导致您处理的位置不当。

例如,假设方法 A 调用方法 B。

方法 A 总耗时为 10 秒(这里总时间包括调用方法 B 的时间),并且调用方法 B 总耗时也为 10 秒。

如果分析了方法 A 和 B,则调用栈会反映出该信息。您将看到,方法 A 的自用时间为 0秒,而方法 B 的自用时间为 10 秒(这 10 秒实际上是在方法 B 中花费的)。但是如果未分析方法 B,则只会看到调用方法 A 耗时 10 秒,并且 A 的自用时间为 10 秒。因此,您可能认为问题就是出在方法 A 中,而不是方法 B 中。

需特别指出的是,您在最初编译 JSP 期间,会注意到 JSP 的自用时间很长。如果您重置收集的结果,然后再重新显示该页,则自用时间将会显著减少。

构造函数调用

因为 Java 分析策略中存在某些限制,所以 this()super() 的初始调用将显示为构造函数调用的同级调用,而不是子级调用。请参见以下示例:


class A
{
   public A()
   {
      this(0);
   }
   public A(int i)
   {
   }
}

and:

class B
{
   public static void test()
   {
      new A();
   }
}
The call tree will look like this:
B.test()
   -A.<init>(int)
   -A.<init>()
Rather than this:
B.test()
   -A.<init>()
      -A.<init>(int)

守护线程

不要被表面上许多 Identity Manager 守护线程(如 ReconTask.WorkerThread.run()TaskThread.WorkerThread.run())所耗费的大量时间所误导。其中大部分时间是在休眠(等待事件)中度过的。必须仔细研究这些情况,以了解这些线程在处理事件时实际使用的时间。

入门

本节对如何启动 Profiler 以及如何使用 Profiler 图形用户界面的各种功能进行了介绍。此信息分为以下几个部分:

准备工作

由于 Profiler 将耗费巨大的内存,因此您应该显著增加服务器和 Netbeans Java 虚拟机 (Java Virtual Machine, JVM) 的内存。

    增加服务器的内存:

  1. 打开 Netbeans 窗口,然后选择“运行时”选项卡。

  2. 展开“服务器”节点,右键单击“捆绑的 Tomcat”,然后从菜单中选择“属性”。

  3. 当显示“服务器管理器”对话框时,清除“连接”选项卡上的“启用 HTTP 监视器”复选框。

  4. 选择“平台”选项卡,将“VM 选项”设置为 -Xmx1024M,然后单击“关闭”。

    增加 Netbeans JVM 的内存:

  1. 打开 netbeans-installation-dir \etc\netbeans.conff 文件,并找到以下行:

    netbeans_default_options="-J-Xms32m -J-Xmx ...

  2. -J-Xmx 值更改为 -J-Xmx 1024M

  3. 保存并关闭该文件。

完成后,可以按下一节中所述的方法启动 Profiler。

启动 Profiler

可以使用以下任意方法从 Identity Manager IDE 窗口中启动 Profiler:


注 –

当主 Identity Manager 项目是 7.1 Update 1 版本或更高版本时,“在主项目上启动 Identity Manager Profiler”图标将处于启用状态。


启动 Profiler 时,会显示“Profiler 选项”对话框,您可以指定要使用的性能分析选项。指定 Profiler 选项中提供了设置这些选项的说明。

使用 Profiler

本节介绍了 Profiler 图形用户界面的功能以及如何使用这些功能。信息通过以下方式进行组织:

指定 Profiler 选项

“Profiler 选项”对话框由以下选项卡组成:

使用这些选项卡上的选项,可指明要对哪些对象进行性能分析,以及要显示在性能分析中的元素。

指定 Profiler 选项后,单击“确定”可启动 Profiler。根据项目配置,Profiler 将执行以下两项操作之一:


注 –

可以选择 "IdM" ->“设置 Identity Manager 实例”来控制用于该项目的 Identity Manager 实例操作。


模式

“模式”选项卡提供了以下选项:

IDM 对象过滤器

“IDM 对象过滤器”选项卡提供了以下选项:

Java 过滤器

选择“Java 过滤器”选项卡可以执行以下操作:

Java 过滤器以方法模式的形式提供,它们采用根据规范的方法名称执行包含或排除操作的模式来表示。其中,规范的方法名称为:

fully-qualified-class-name.method-name( parameter-type-1, parameter-type-2, ... )


注 –

对于构造函数,method-name<init>


下面列举了一些示例:


注 –

最后两个示例目前是等效的,因为这些过滤器仅会应用于自定义类和 Identity Manager 类。


如有必要,可以通过适当修改 build.xml 中的以下行来分析其他 JAR。例如,


<instrument todir="${lighthouse-dir-profiler}/WEB-INF" 
verbose="${instrumentor.verbose}" includeMethods="${profiler.includes}" 
excludeMethods="${profiler.excludes}">
           <fileset dir="${lighthouse-dir}/WEB-INF">
               <include name="lib/idm*.jar"/>
               <include name="classes/**/*.class"/>
           </fileset>
</instrument>

默认情况下,该配置包含所有自定义类和大多数 Identity Manager 类。强制排除了一些 Identity Manager 类,这是因为启用这些类会中断 Profiler 的运行。

例如,会排除工作流、表单和 XPRESS 引擎中的类,否则在分析 Java 和 Identity Manager 对象时,Profiler 将会生成难以理解的快照。

请注意,Java 过滤器将提供比 IDM 对象过滤器更细的过滤粒度。因此,使用 Java 分析会显著增加执行时间的开销,从而使性能分析结果出现巨大的偏差。由于是解释而非编译 Identity Manager 对象,因此分析开销可以忽略不计。因此,举例来说,根本没有理由排除工作流 A 而包含工作流 B,等等。


注 –

在运行 Profiler 时,不能修改 Java 过滤器。必须先停止 Profiler 才能更改 Java 过滤器。


其他

“其他”选项卡提供了以下选项:

使用 "IDM Profiler" 视图

IDM Profiler 视图由以下区域组成:

“当前项目”区域

“当前项目”区域包含一个下拉菜单,该菜单列出了所有的当前项目。使用此菜单可以选择要分析的项目。

控制区域

“控制”区域包含四个图标,如下表中所述:

图标 

名称 

用途 

显示“启动 Identity Manager Profiler”图标的图形

启动 Identity Manager Profiler 

启动 Profiler 并打开“Profiler 选项”对话框。 

显示“停止 Identity Manager Profiler”图标的图形

停止 Identity Manager Profiler 

停止 Profiler。 

显示“重置收集的结果”图标的图形

重置收集的结果 

重置截止到此刻您收集的所有分析结果。 

显示“修改性能分析”图标的图形

修改性能分析 

重新打开“Profiler 选项”对话框,以便您可以更改任何设置来修改当前的分析结果。 

“状态”区域

“状态”区域会报告您是否与主机进行了连接,并提供有关 Profiler 启动、运行和停止的状态信息。

“性能分析结果”区域

“性能分析结果”区域包含两个图标,如下表中所述:

图标 

名称 

用途 

显示“启动 Identity Manager Profiler”图标的图形

启动 Identity Manager Profiler 

启动 Profiler 并打开“Profiler 选项”对话框。 

显示“重置收集的结果”图标的图形

重置收集的结果 

重置截止到此刻您收集的所有分析结果。 

“已保存的快照”区域

“已保存的快照”区域提供了所有已保存快照的列表。


注 –

保存快照中提供了保存快照的说明。


此外,还可以使用以下按钮来管理这些快照:

使用“快照视图”

打开快照时,结果会显示在位于 Identity Manager IDE 右上方的“快照视图”窗口中。

快照提供了几种数据视图,将在以下各节中进行介绍:

“调用树”视图

“调用树”视图由一个树表组成,该树表显示了整个系统的调用计时和调用计数。

此树表包含三列:

“热点”视图

“热点”视图提供了节点的平面化列表,用于显示汇总调用计时(不考虑父节点)。

此视图包含以下列:

“反向跟踪”视图

“反向跟踪”视图提供了反向的调用栈,显示了从中调用每个节点的所有调用链。

可以使用这些统计信息来回答如下问题:如果我删除自此节点开始的特定调用链,将节省多少时间?

可以从其他任何快照视图中访问“反向跟踪”视图,方法是右键单击某个节点(称为根节点),然后从弹出式菜单中选择“显示反向跟踪”。


注 –

“时间”和“调用次数”数据值在“反向跟踪”视图中具有某些不同的含义:


“被调用者”视图

“被调用者”视图提供了节点(称为根节点)的汇总调用树(不考虑其父调用链)。

如果存在一个问题区域,并且整个主调用树中的许多位置都调用了该区域,当您想查看该节点的整体性能分析时,这些统计信息将非常有用。

可以从其他任何快照视图中访问“被调用者”视图,方法是右键单击某个节点(称为根节点),然后从弹出式菜单中选择“显示被调用者”。


注 –

“被调用者”视图中所用的时间和调用次数数据值与那些在“调用树”视图中使用的数据值具有相同的含义。


使用弹出式菜单选项

右键单击“调用树”视图或“热点”视图中的任意节点,将显示一个弹出式菜单,其中的选项如下表中所述:

菜单选项 

描述 

转至源 

选择此选项可以查看 Java 方法、工作流、表单、规则或 XPRESS 所对应节点的 XML 源。有关此视图的详细信息,请参见 Profiler 查找和管理源的方式

显示反向跟踪 

选择此选项可以访问“反向跟踪”视图。有关此视图的详细信息,请参见“反向跟踪”视图

显示被调用者 

选择此选项可以访问“被调用者”视图。有关此视图的详细信息,请参见“被调用者”视图

在“热点”视图中查找 

选择此选项可以在“热点”视图中查找节点。有关此视图的详细信息,请参见“热点”视图

“列表选项”->“排序”-> 

选择此选项可以看到以下选项 

  • 调用树

  • 时间

  • 调用次数

  • 升序

  • 降序

“列表选项”->“更改可视列” 

选择此选项可以更改在“调用树”或“热点”列表中显示的列。 

当显示“更改可视列”对话框时,您可以选择以下一个或多个选项: 

  • 调用树:调用树

  • 调用次数:调用次数

  • 时间:时间

搜索快照

使用位于“快照视图”窗口顶部的“搜索”图标显示“搜索”图标的图形 ,可以在“调用树”视图或“热点”树中按名称来搜索节点。

此外,还可以右键单击“调用树”视图或“热点”视图中的任意节点,然后从弹出式菜单中分别选择“在‘调用树’视图中查找”或“在‘热点’视图中查找”来搜索节点。

保存快照

Profiler 提供了几个选项来保存快照。有关这些选项的描述,请参见下表:

图标 

名称 

用途 

显示“启动 Identity Manager Profiler”图标的图形

“在项目中保存快照”图标(位于“快照视图”窗口的顶部) 

在项目的 nbproject/private/idm-profiler 目录中保存快照。Profiler 视图的“已保存的快照”部分会列出在项目中保存的快照。

显示“停止 Identity Manager Profiler”图标的图形

“在外部保存快照”图标(位于“快照视图”窗口的顶部) 

将快照保存到外部的任意位置。 

显示“重置收集的结果”图标的图形

“另存为”按钮(位于“已保存的快照”区域中) 

将快照保存到外部的任意位置。 

教程:性能问题疑难解答

Identity Manager 提供了一个教程 (profiler-tutorial.zip),可以帮助您了解如何使用 Profiler 来解决表单、Java 规则、工作流和 XPRESS 存在的问题。

可以使用以下步骤完成本教程。

Procedure步骤 1:创建 Identity Manager 项目

  1. 选择“文件”->“新建项目”。

  2. 当显示“新建项目”向导时,指定以下内容,然后单击“下一步”:

    1. 在“类别”列表中,选择 "Web" 以指明要创建的项目的类型。

    2. 在“项目”列表中,选择“Identity Manager 项目”。


      注 –

      必须创建一个适用于功能完备的开发环境的常规 Identity Manager 项目。不要选择“Identity Manager 项目(远程)”选项。


  3. 填充“名称和位置”面板上的以下字段,然后单击“下一步”:

    • 项目名称:输入 Idm80 作为项目名称。

    • 项目位置:使用默认位置或指定其他位置。

    • 项目文件夹:使用默认文件夹或指定其他文件夹。

  4. 当显示“Identity Manager WAR 文件位置”面板时,输入 Identity Manager 8.1 war 文件的位置。通常,解压缩此文件可在相同目录中创建一个 idm.war 文件。

  5. 单击“下一步”转至“系统信息库设置”面板。

    无需更改此面板上的默认设置,直接单击“完成”即可。当看到“生成成功”消息显示在“Identity Manager IDE 输出”窗口中时,就可以提取 Profiler 教程文件了。有关说明,请参见第 2 步:解压缩 Profiler 教程

Procedure第 2 步:解压缩 Profiler 教程

  1. 在项目根目录中解压缩 profiler-tutorial.zip。提取的文件包括:

    <project root>/custom/WEB-INF/config/ProfilerTutorial1.xml
    <project root>/custom/WEB-INF/config/ProfilerTutorial2.xml
    <project root>/src/org/example/ProfilerTutorialExample.java
    <project root>/PROFILER_TUTORIAL_README.txt
  2. 启动 Profiler。继续执行第 3 步:启动 Profiler

Procedure第 3 步:启动 Profiler

  1. 按照准备工作中提供的说明增加服务器和 Netbeans JVM 的内存。

  2. 使用概述中介绍的任一方法启动 Profiler。

  3. 当显示“Profiler 选项”对话框时,可以指定性能分析选项。

  4. 继续执行第 4 步:设置 Profiler 选项


    注 –

    有关所有不同 Profiler 选项的详细信息,请参见指定 Profiler 选项


Procedure第 4 步:设置 Profiler 选项

为实现本教程的教学目的,请指定以下 Profiler 选项:

  1. 在“模式”选项卡上,选择“Java 和 IDM 对象”以分析表单、Java、规则、工作流及 XPRESS 对象。

  2. 选择“Java 过滤器”选项卡。

    使用以下步骤禁用自定义 Java 类(本例中为 org.example.ProfilerTutorialExample)以外的所有 Identity Manager Java 类:

    1. 单击“新建”,一个新的空白字段将显示在“过滤器”列的底部。

    2. 在新字段中输入 com.waveset.*,然后选中“排除”复选框。

    3. 再次单击“新建”。

    4. 在新字段中输入 com.sun.idm.*,然后选中“排除”复选框。

  3. 单击“确定”以运行 Profiler。


    注 –

    如果您是第一次对某个项目运行 Profiler,或在近期执行了“清理项目”操作,则 Profiler 将需要几分钟时间来完成处理。


    Profiler 完成处理后,系统会提示您登录。

  4. 输入密码 configurator,选中“记住密码”复选框,然后单击“确定”以继续。

  5. 当显示 Identity Manager 窗口时,请登录。


    注 –

    通常,您应以其他的用户身份登录到 Identity Manager,而不是再以 configurator 身份登录。您已经以 configurator 身份登录到 Profiler,Identity Manager 会话池仅允许一个用户具有一个条目。使用多个条目会导致会话池中断,并且可能造成性能分析结果出现偏差,出现更细化的性能问题。

    但是,对于此简单示例,会话池没有出现任何问题,因此您可以使用 configurator/configurator 登录。


  6. 在 Identity Manager 中,选择“服务器任务”->“运行任务”,然后单击 "ProfilerTutorialWorkflow1"。

    此教程可能需要一些时间进行响应。

  7. 尽管您现在可以拍摄快照,但您最好先重置结果、运行 Profiler、再次运行 Profiler,然后再拍摄快照。


    注 –

    最佳的做法是在拍摄快照之前运行几次 Profiler,以确保预备好所有缓存、编译好所有 JSP 等等。

    通过运行几次 Profiler,您可以重点解决实际的性能问题。不适合应用此做法的唯一一种例外情况是:存在自动填充缓存方面的问题。


    1. 返回到 Identity Manager IDE 中的 "IDM Profiler" 视图。单击“性能分析结果”部分(或“控制”部分)中的“重置收集的结果”图标,以重置到目前为止收集的所有结果。

    2. 在 Identity Manager 中,再次选择“服务器任务”->“运行任务”,然后单击 "ProfilerTutorialWorkflow1"。

    3. 当显示“进程图”时,返回到 Identity Manager IDE,然后单击“性能分析结果”部分中的“拍摄快照”。

  8. Identity Manager IDE 会下载您的快照,并在窗口的右侧显示结果。

    此区域为“调用树”视图。在“调用树”的顶部,可以看到 /idm/task/taskLaunch.jsp 及其“时间”列中列出的时间。该时间应该表示整个请求耗时六秒以上。

  9. 展开 /idm/task/taskLaunch.jsp 节点,会看到 ProfilerTutorialWorkflow1 耗时六秒。

  10. 展开 ProfilerTutorialWorkflow1 节点。请注意,activity2 耗时四秒,activity1 耗时两秒。

  11. 展开 activity2

    请注意,action1 耗时两秒,action2 耗时两秒。

  12. 展开 action1,请注意,<invoke> 也耗时两秒。

  13. 双击 <invoke> 以打开 ProfilerTutorialWorkflow1.xml,并突出显示以下行:


    <invoke name=’example’ class=’org.example.ProfilerTutorialExample’/>

    您应看到调用 ProfilerTutorialExample 方法耗时两秒。


    注 –

    实际上,您浏览的是快照中捕获的 XML 源,而不是项目中的源。快照是完全自包含的。(有关详细信息,请参见 Profiler 查找和管理源的方式。)


  14. 选择 "CPU:<date>< time>" 选项卡以返回到您的快照。

  15. 展开 <invoke> 节点,请注意,Profiler 在 Java ProfilerTutorialExample.example() 方法中耗时两秒。

  16. 双击该方法的名称以打开 ProfilerTutorialExample.java 源,并突出显示以下行:


    Thread.sleep(2000);

    存在问题!此方法包含一个两秒的线程休眠。

  17. 如果返回到“调用树”,则可以看到所有耗时两秒的路径都通向此方法。(您应看到三个路径,共耗时六秒。)

  18. 选择“热点”选项卡(位于“调用树”区域的底部)以打开“热点”视图。请注意,ProfilerTutorialExample.example() 的自用时间总计为六秒。

    (有关“热点”的详细信息,请参见使用“快照视图”。)

  19. 右键单击 ProfilerTutorialExample.example(),然后从弹出式菜单中选择“显示反向跟踪”。

    将在该区域的底部显示一个新的“反向跟踪”选项卡。

  20. 展开“反向跟踪”选项卡上的 ProfilerTutorialExample.example() 节点,会看到从三个位置调用了此方法,并且从每个位置调用此方法时都耗时两秒。

    (有关“反向跟踪”的详细信息,请参见使用“快照视图”。)

  21. 单击“在项目中保存快照”图标以保存您的快照,然后将其关闭。

    如果查看 "IDM Profiler" 选项卡上的“已保存的快照”部分,则会看到快照。(您可能需要向下滚动才能看到。)

  22. 选择已保存的快照,然后单击“打开”以重新打开该快照。


    注 –

    可以使用“另存为”按钮在外部位置保存您的快照,并可使用“加载”按钮加载位于项目外部的快照。


  23. 再次关闭该快照。

Procedure第 5 步:分析 ManualAction 工作流

本教程的下一部分将说明如何分析工作流 ManualAction。

  1. 在 Identity Manager 中,选择“服务器任务”->“运行任务”,然后单击 "ProfilerTutorialWorkflow2"。

    稍等片刻,将会显示一个空表单。

  2. 单击“保存”,将会显示进程图。

  3. 再次选择“服务器任务”->“运行任务”。

  4. 返回到 Identity Manager IDE 的 "IDM Profiler" 视图,然后单击“性能分析结果”部分中的“重置收集的结果”图标。

  5. 现在,单击 Identity Manager 中的 "ProfilerTutorialWorkflow2"。

  6. 当再次显示空表单时,单击“保存”。

  7. 在 "IDM Profiler" 视图中,单击“拍摄快照”。

    几秒钟后,快照会显示在“调用树”区域中。您应看到 /idm/task/workItemEdit.jsp 耗时六秒以上。(此结果对应于工作流中的手动操作。)

  8. 展开 /idm/task/workItemEdit.jsp 节点,请注意,运行 ManualAction 表单中的所有派生共耗时六秒。

  9. 展开 DerivationdisplayNameFormvariables.dummy<block> 节点。

    您应看到 <block> 耗时六秒,其中 Profiler 在三次调用 ProfilerTutorialExample.example() 方法时各耗时两秒。

  10. 可以双击 <block> 查看源。

联机帮助

本节包含联机帮助的文档更正内容。