快速业务通道

IBM的Java诊断,第4部分 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14
s)。在出现的向导中,输入以下信息:

Name:DWAnalyze

Superclass:使用 Browse 按钮添加 com.ibm.dtfj.analyzer.base.AnalyzerBase

Interfaces:使用 Add 按钮添加 com.ibm.dtfj.analyzer.ext.IAnalyze

单击 Finish 即可使用 stub 方法创建 DWAnalyze 分析程序类。

IBM的Java诊断,第4部分(4)

时间:2011-11-02 IBM Helen Beeken

要继续该示例,输入清单 1 所示的代码。这个简单的示例可以确定被分析的转储是否是在多处理器机 器上创建的。

清单 1. 实现 IAnalyze 的分析程序

package mypackage; import com.ibm.dtfj.analyzer.base.AnalyzerBase; import com.ibm.dtfj.analyzer.ext.IAnalyze; import com.ibm.dtfj.image.DTFJException; import com.ibm.dtfj.image.Image; import com.ibm.util.SimpleVector; /**   * This is the basic design required to implement an IAnalyze  Interface   */ public class DWAnalyze extends AnalyzerBase implements IAnalyze {    private static String description = "Check the number of  processors";    /*     * This rule checks if the processor count is greater than 1     */    private static String[] multiProcessorRules = {      "processorCount > 1   TRUE"    };    /**     * An analyzer to report if the dump was produced on a  multiprocessor machine     */    public DWAnalyze() {      defineRule("isMultiProcessor",multiProcessorRules);    }    /* (non-Javadoc)    * @see com.ibm.dtfj.analyzer.base.AnalyzerBase#getShortDescription()    */    public String getShortDescription() {      return description;    }    /* (non-Javadoc)    * @see com.ibm.dtfj.analyzer.ext.IAnalyze#doAnalysis()    */    public String[] doAnalysis() {      return checkProcessors(getContext().getCurrentImage());    }    /**     * This function uses the getProcessorCount() function from the Image  class     * and then adds an entry into the ret[] array for parsing through  the analysisRules[]     * array. The format for passing through the analysisRules needs to  be of the type     * name=value     */    private String[] checkProcessors(Image image) {     ret = null;      try {        int procNum = image.getProcessorCount();        ret = new String[1];        ret[0] = "processorCount=" + procNum;      } catch (DTFJException e) {        handleError("No processor information",e);      }      return ret;    } }

从上面的示例可以看到,必须实现两种方法: getShortDescription() 和 doAnalysis()。 doAnalysis() 方法的目的是从转储中提取信息并以名称/值对的方式返回。这些信息将通过使用 AnalyzerBase(能够处理一些简单的分析规则)的默认行为进行进一步分析。针对名称/值对集使用各个 规则并选择一个特定的名称对值进行检验。在清单 1 中,如果名称为 processorCount 的一项的值大于 1,规则处理结果将为真(true)。

要查看分析模块的运行,可跳至 “运行分析程序” 一节。

IBM的Java诊断,第4

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号