`
dyllove98
  • 浏览: 1404279 次
  • 性别: Icon_minigender_1
  • 来自: 济南
博客专栏
73a48ce3-d397-3b94-9f5d-49eb2ab017ab
Eclipse Rcp/R...
浏览量:39006
4322ac12-0ba9-3ac3-a3cf-b2f587fdfd3f
项目管理checkList...
浏览量:79974
4fb6ad91-52a6-307a-9e4f-816b4a7ce416
哲理故事与管理之道
浏览量:133093
社区版块
存档分类
最新评论

使用JMX编写PMI应用问题

 
阅读更多

想尝试写个WebSphere应用监控的小东东,就照着文档下载Sample试了试(具体参见:Writing PMI applications using the JMX interface),呵呵,碰到不少问题,还好解决了。看Googel上也有人问,就拿出来共享一把了。

1、找不到相关类
报错:java.lang.ClassNotFoundException,或者:java.lang.NoClassDefFoundError,这就需要检查相关的运行期环境了。
首先从Java Stack Trace信息中明确无法找到的类,如下报错:
Exception in thread "main" java.lang.NoClassDefFoundError: com/ibm/websphere/product/WASProduct
    at com.ibm.ws.management.util.Utils.getProductVersion(Utils.java:106)
    at com.ibm.ws.management.connector.interop.JMXVersionValidation.getJmxVersionHeader(JMXVersionValidation.java:95)
    at com.ibm.ws.management.connector.soap.SOAPConnectorClient.invokeTemplate(SOAPConnectorClient.java:582)
    at com.ibm.ws.management.connector.soap.SOAPConnectorClient.queryNames(SOAPConnectorClient.java:438)
    at com.ibm.ws.management.connector.soap.SOAPConnectorClient.invoke(SOAPConnectorClient.java:370)
    at $Proxy0.queryNames(Unknown Source)
    at com.ibm.ws.management.AdminClientImpl.queryNames(AdminClientImpl.java:89)
    at com.ibm.websphere.pmitool.JmxStat.queryObjectNames(JmxStat.java:321)
    at com.ibm.websphere.pmitool.JmxStat.listNodes(JmxStat.java:341)
    at com.ibm.websphere.pmitool.JmxStat.main(JmxStat.java:70)
可确认com.ibm.websphere.product.WASProduct类无法找到。
由于WebSphere本身可以正常获取PMI信息,所以可以确定这些类在WebSphere生产环境下必然存在,而开发环境中并未引入这些类从而导致找不到类的错误。那就在生产环境中找找了,看漏了哪些jar包。
如何从生产环境中找到相应jar包呢,呵呵,感谢那些Unix Power Tools了,Window上我还真不知道怎么办了。具体命令和输出如下:
# cd $WAS_HOME/lib
# class="com.ibm.websphere.product.WASProduct"
# find . ! -name . -prune -name "*.jar" -exec jar tvf {} \; -print | egrep "$class|.jar" | sed -n "/$class/{
> :top
> N
> /\.jar/p
> /\.jar/q
> b top
> }"
 11886 Wed Jul 04 14:34:10 GMT+08:00 2007 com/ibm/websphere/product/WASProductNLS_de.class
 12249 Wed Jul 04 14:34:10 GMT+08:00 2007 com/ibm/websphere/product/WASProductNLS_es.class
 12215 Wed Jul 04 14:34:10 GMT+08:00 2007 com/ibm/websphere/product/WASProductNLS_fr.class
 12038 Wed Jul 04 14:34:10 GMT+08:00 2007 com/ibm/websphere/product/WASProductNLS_it.class
 13175 Wed Jul 04 14:34:10 GMT+08:00 2007 com/ibm/websphere/product/WASProductNLS_ja.class
 11856 Wed Jul 04 14:34:10 GMT+08:00 2007 com/ibm/websphere/product/WASProductNLS_ko.class
 11833 Wed Jul 04 14:34:10 GMT+08:00 2007 com/ibm/websphere/product/WASProductNLS_pt_BR.class
 10359 Wed Jul 04 14:34:10 GMT+08:00 2007 com/ibm/websphere/product/WASProductNLS_zh.class
 10539 Wed Jul 04 14:34:10 GMT+08:00 2007 com/ibm/websphere/product/WASProductNLS_zh_TW.class
 11091 Wed Jul 04 14:34:10 GMT+08:00 2007 com/ibm/websphere/product/WASProductNLS.class
 11097 Wed Jul 04 14:34:10 GMT+08:00 2007 com/ibm/websphere/product/WASProductNLS_en.class
 11097 Wed Jul 04 14:34:10 GMT+08:00 2007 com/ibm/websphere/product/WASProductNLS_pt.class
 23110 Wed Jul 04 14:34:10 GMT+08:00 2007 com/ibm/websphere/product/WASProduct.class
  1720 Wed Jul 04 14:34:10 GMT+08:00 2007 com/ibm/websphere/product/WASProductException.class
  1830 Wed Jul 04 14:34:10 GMT+08:00 2007 com/ibm/websphere/product/WASProductInfo.class
  4897 Wed Jul 04 14:34:10 GMT+08:00 2007 com/ibm/websphere/product/WASProductFile.class
./wasproduct.jar
呵呵,找到wasproduct.jar,加入到开发环境中就好了。

2、类转换错误
由于Sample代码针对WebSphere5,而我的WebSphere版本6.0,故执行中常碰到:java.lang.ClassCastException异常。
如下语句:
            return(Stats)ac.invoke(perfOname, "getStatsObject", params, sigs);
执行中将报错:
java.lang.ClassCastException: com.ibm.ws.pmi.stat.StatsImpl
    at com.ibm.websphere.pmitool.JmxStat.collectStatsViaPerfMbean(JmxStat.java:818)
    at com.ibm.websphere.pmitool.JmxStat.main(JmxStat.java:194)
检查发现ac.invoke返回类com.ibm.ws.pmi.stat.StatsImpl,该类无法转换为com.ibm.websphere.management.statistics.Stats,事实上该类实现了com.ibm.websphere.pmi.stat.WSStats,故需要将Sample代码做出相应的修改:
            return(WSStats)ac.invoke(perfOname, "getStatsObject", params, sigs);
呵呵,由于版本不兼容的类似修改就多了,只能case by case的去解决了。

分享到:
评论

相关推荐

    使用jmx所需的jar包

    在Java应用中使用JMX通常涉及到引入特定的JAR包来支持其功能。 标题中提到的“使用jmx所需的jar包”是指在进行JMX开发时必要的类库文件。通常,这些JAR包包含了JMX API和实现,它们使得开发者能够构建MBeans...

    JBOSS使用指南,JMX原理和应用,EJB3.0使用说明

    总结,理解并熟练掌握JBoss的配置、JMX的使用以及EJB3.0的编程模型,将有助于你更好地在企业环境中部署和管理Java应用程序,提升开发效率和系统稳定性。通过深入学习这些知识点,你可以更加游刃有余地应对复杂的Java...

    jmx 入门文档,附有开发实例文档

    Java Management Extensions(JMX)是Java平台上的一个标准,用于创建和管理应用程序的管理资源,如服务、设备、系统组件等。JMX 提供了一种框架和API来监控和管理运行时的应用程序,使得开发者可以轻松地添加管理...

    JMX实例与应用模型下载

    JMX应用实例与实现,通过一个简单的JavaWeb应用来验证JMX在应用中的植入管理和应用

    JMX一步一步来,快速学会开发JMX应用

    JMX(Java Management Extensions)是一个用于在Java应用程序中添加管理和监控功能的框架。它提供了一套标准的接口和服务,使得开发者能够轻松地在Java应用中集成管理和监控的能力。JMX的核心概念包括MBeans...

    JMX 在GlassFish中的应用

    这对于诊断性能问题、监控应用健康和调整资源配置极为关键。 #### GlassFish对JMX的扩展和实现 **AMX**是GlassFish对JMX的一次重大扩展,它不仅简化了MBean的创建和注册过程,还引入了更高级的功能,如动态代理、...

    JMX配置与使用

    Java Management Extensions(JMX)是Java平台提供的一种标准管理框架,用于监控和管理应用程序、操作系统、网络设备等。它提供了一种统一的方式来暴露管理和控制信息,使得开发者可以创建可管理和自描述的服务。JMX...

    使用jmx监控service接口

    NULL 博文链接:https://jonerxq.iteye.com/blog/1990872

    JMX实战 JMX开发

    书中不仅有对于基础知识的介绍,还有对于JMX开发中重大的体系架构问题的深入探讨,总结了大量JMX开发中的设计模式,并讨论了框架、安全性与性能等等。书中提供了几个典型的例子,兼顾各种开发平台,这些例子的代码...

    论文研究-JMX技术在网络监控中的应用.pdf

    例如,可以使用JMX API编写代码动态地调用MBean服务器的接口来创建新的MBean,或者发送通知来启动监控中的某些特定任务。这种能力极大地增强了网络监控系统的灵活性和动态配置能力。 综上所述,JMX技术在网络监控中...

    jmx监控weblogic,tomcat,websphere源码

    在本项目中,"jmx监控weblogic,tomcat,websphere源码"涉及了使用JMX来监控三个主流的Java应用服务器:WebLogic、Tomcat和WebSphere。这些服务器都是企业级应用部署的常见选择,对它们的监控对于确保系统性能、稳定性...

    使用JMX监控类的实例数量

    总结起来,使用JMX监控类的实例数量是通过创建、实现和注册MBean来完成的,它提供了对应用程序内部状态的透明度,有助于进行性能调优和问题诊断。结合源码分析和合适的工具,我们可以更好地理解并控制Java应用程序的...

    JMX HelloWorld Download

    **标题解析:** "JMX HelloWorld Download" 指的是一个关于Java Management Extensions(JMX)的简单示例,可能是用于教学或演示如何在Java应用中使用JMX技术。"Download"表明这是一个可以下载的资源,可能包含了...

Global site tag (gtag.js) - Google Analytics