诊断提供程序已注册的属性和已注册的测试
每个诊断提供程序 (DP) 都提供了状态转储属性、配置转储属性、自测试和自测试属性的列表。测试就是 DP 可以执行的操作。属性是可从配置转储、状态转储或特定自诊断测试过程中收集的一些信息。
可将每个属性看作具有标签的一部分信息。还可以认为每个属性是已注册或者未注册的。已注册的属性是指在 WebSphere® Application Server 的不同发行版中均提供的属性。而未注册的属性在产品的将来发行版中可能不会以它的当前形式提供(尚未落实)。
当执行配置转储、状态转储或自诊断测试时,管理员或自动工具可以请求仅已注册的值,也可以请求所有值,这得根据管理员或工具的需要来定。注意,只能通过诊断提供程序的 Java™ 管理扩展 (JMX) MBean 接口(可以按程序或者通过 wsadmin 工具来访问该接口)来获取用于对结果进行过滤的选项。
DiagnosticProviderRegistration XML 文件
DiagnosticProviderRegistration 可扩展标记语言 (XML) 文件与方法特征符一起用来对调用各种方法所得到的结果进行过滤。此 XML 文件定义由组件显示的配置信息、状态信息和自诊断测试。在配置信息和状态信息中,关键工作单元称为属性。属性的指定为如下所示:
<attribute>
<id><Regular Expression representing the attribute name></id>
<descriptionKey><MsgKey into a ResourceBundle for localization of the label></descriptionKey>
<registered>true</registered>
</attribute>
各个组成部分为如下所示:
- ID:
- 属性的名称。可以使用符合正则表达式语法的通配符来表示此名称。在下列位置将使用已注册的属性标识:
- 在诊断提供程序的配置转储方法和状态转储方法中用来确定要返回哪些属性。
- 在管理控制台中,用来使描述关键字与从对诊断提供程序发出的要求执行配置转储、状态转储或自诊断操作的请求中返回的属性相匹配。
- descriptionKey:
- 这是 resourceBundle 中用于本地化的一个关键字。
- registered:
- 这是一个布尔值,用于限定此属性从软件的一个发行版到下一个发行版中是否都可用。如果 registered 为 true,那么此属性在下一个发行版中也可用。如果 registered 为 false,那么不能保证此属性将继续存在。当处理未注册的属性时,应小心使用自动化。
selfDiagnosticTest 的指定为如下所示:
<test>
<id><Regular Expression for the name of the test></id>
<descriptionKey><MsgKey into a ResourceBundle for localization of the label></descriptionKey>
<attribute><One or more attributes which will be output from this test></attribute>
</test>
各个组成部分为如下所示:
- ID:
- 类似于属性的 ID,但是在本例中,用于描述要执行的测试而不是要返回的属性。
- descriptionKey:
- 这是 resourceBundle 中用于本地化的一个关键字。
方法接口
public DiagnosticEvent [] configDump(String aAttributeId, boolean aRegisteredOnly);
public DiagnosticEvent [] stateDump(String aAttributeId, boolean aRegisteredOnly);
这些方法对组件调用配置转储或状态转储,对于要返回的属性指定一个正则表达式过滤器,以及对输出进行过滤并使它只包含所有相匹配的属性,或者只包含已注册的那些属性。这使管理员或自动运行的软件执行方法来指定所有字段中的一部分字段(如果显示了许多属性,或者“状态收集规范”增加了可用数据的数量,那么上述操作尤其重要)。下列 helper 方法可用来帮助对输出进行过滤。
要获取可以返回的属性的列表并对它们进行过滤:
public static AttributeInfo [] queryMatchingDPInfoAttributes(String aAttributeId,
AttributeInfo [] inAttrs, String [] namesToCheck, boolean aRegisteredOnly) {
要获取可以返回的单个属性并对它进行过滤: public static AttributeInfo queryMatchingDPInfoAttributes(String aAttributeId,
AttributeInfo [] inAttrs, String nameToCheck, boolean aRegisteredOnly) {
要浏览已填充的一组属性信息并移除不需要的部分: public static void filterEventPayload(String aAttributeId, HashMap payLoad) {
有关这些消息的详细信息,请查阅 DiagnosticProviderHelper 类的 API 文档。基本概念是:一旦组件知道可以返回哪些属性,helper 方法就会根据正则表达式逻辑和注册布尔值来确定应该返回哪些属性。
此处的 selfDiagnostic 方法接口类似于 Configdump 和 Statedump 的方法接口:
public DiagnosticEvent[] selfDiagnostic(String aTestId, boolean aRegisteredOnly)
区别在于第一个参数是一个正则表达式过滤器,用于确定要运行哪个测试。