使用 StatsFactory 创建定制 PMI
可以更新应用程序,以调用使用 Stats/PMI(性能监控基础结构)模板、资源束、Stats/PMI 模块和方法定义的方法,从而更新定制统计信息。
关于此任务
可以更新应用程序,以调用使用 Stats/PMI 模板、资源束、Stats/PMI 模块和方法定义的方法,从而更新定制统计信息。要使用定制 PMI 检测组件,需要执行以下过程:
- 定义 Stats/PMI 模板(XML 文件)。
- 定义资源束(属性文件)。
- 定义 Stats/PMI 模块,并使用 StatsFactory 创建 Stats/PMI 对象。
- 定义应用程序将用于更新定制统计信息的方法。
- 更新应用程序以对(上述步骤中定义的)方法进行相应的调用。
- 访问应用程序。
- 连接至 Tivoli Performance Viewer (TPV) 并查看定制 PMI 统计信息。
过程
- 定义 Stats/PMI 模板。 StatsFactory 使运行时组件可以使用 XML 模板来创建定制 Stats/PMI 模块。该模板应遵循 DTD com/ibm/websphere/pmi/xml/stats.dtd。以下是样本应用程序中使用的模板的示例。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE Stats SYSTEM "stats.dtd"> <Stats type="com.stats.MyStats"> <description>MyStats.desc</description> <resourceBundle>com.stats.MyStatsResourceBundle</resourceBundle> <CountStatistic ID="1" name="MyStats.NumRequests"> <level>low</level> <unit>MyStats.unit.none</unit> <description>MyStats.NumRequests.desc</description> <statisticSet>basic</statisticSet> </CountStatistic> <BoundedRangeStatistic ID="2" name="MyStats.expensiveStat "> <level>high</level> <unit>MyStats.unit.none</unit> <description>MyStats.expensiveStat.desc</description> <updateOnRequest>true</updateOnRequest> </BoundedRangeStatistic> </Stats>
- 定义资源束 资源束使您可以用适当的语言/措辞来定义统计信息的名称及其描述。样本资源束一般类似于以下内容:
MyStats.desc=My View PMI Module MyStats.NumRequests=Request Count MyStats.NumRequests.desc=Total number of My view requests served. MyStats.unit.none=None MyStats.expensiveStat = Expensive Stat MyStats. expensiveStat.desc = Number of Expensive stats MyStats.Group= My Group MyStats.Instance=My Instance
- 定义 Stats/PMI 模块,并使用 StatsFactory 创建 Stats/PMI 对象。
- 创建扩展 StatisticActions 的类
public class MyStatisticsModule extends StatisticActions
- 声明类型为 SPI* 的计数变量,例如 SPICountStatistc 和 SPIBoundedRangeStatistic。
private SPICountStatistic numReqs; private SPIBoundedRangeStatistic expensiveStat;
- 创建类型为 StatsGroup 的 StatsGroup 以及类型为 StatsInstance 的 StatsInstance。
其中 template 是应用程序中 XML 文件所在的路径;例如:private static StatsGroup stocksStatisticsGroup = null; private StatsInstance stocksStatistics = null; MyStatisticsGroup = StatsFactory.createStatsGroup("MyStats.Group", template, null); MyStatistics = StatsFactory.createStatsInstance("MyStats.Instance”,MyStatisticGroup,null,this);
String template = "/com/stats/MyStats.xml";
- 创建扩展 StatisticActions 的类
- 在 StatsInstance 中创建统计信息后,将调用 statisticCreated 以指示已在 Stats 实例中创建统计信息。可以将先前声明的统计信息指定给相应的统计信息;例如:
public void statisticCreated (SPIStatistic s) { // Called when the Statistics are created in the Stats Instance if (s.getId() == MyStats.NUMREQS) { numReqs = (SPICountStatistic)s; // Assign Statistic } }
- 定义应用程序将用于更新定制统计信息的方法。
public void onRequestArrival(){ if (numReqs != null) { numReqs.increment(); // Increment/Decrement Statistic as per Req } }
- 还可以实现 updateStaisticRequest 方法,以更新客户机或任何其他监视应用程序的特定请求的相关统计信息。
在先前的例中,dataId 是将更新的统计信息的标识。public void updateStatisticOnRequest (int dataId) { if (dataId == MyStats.expensiveStat) { expensiveStat.set(xxxxx); } }
- 更新应用程序以对(先前步骤中定义的)方法进行相应的调用。
- 访问应用程序。
- 连接 Tivoli Performance Viewer 并查看定制 PMI 统计信息。
避免故障: 在 Network Deployment 环境中实现定制 PMI 时,可能无法查看定制 PMI 计数器,因为 Stats/PMI.xml 文件和资源束属性文件对于 WebSphere Application Server 类装入器来说不可视。Stats/PMI.xml 文件和资源束属性文件存在于应用程序中。需要将 Stats/PMI.xml 文件和资源束属性文件放入类路径中,才能查看定制 PMI 计数器。
要使定制 PMI 计数器可视,请使用下列文件结构创建包含 Stats/PMI.xml 文件和资源束属性文件的 JAR 文件,并将其放入 WAS_HOME\lib\ext 文件夹。定制 PMI 计数器即对类装入器可视。gotchacom/ibm/app/temp/tempstats.xml --- path of the Stats/PMI.xml com/ibm/app/temp/resourcebundle.props --- path of the resource bundle property file


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tprf_stats_pmi
文件名:tprf_stats_pmi.html