求助,在使用jmx实现websphere监听时出现异常

2025-05-18 15:43:51
推荐回答(2个)
回答1:

  前一阶段一直做WebSphere6.1服务器监控研究,网上的资料不多,也不全,自己翻译加领悟,终于实现了全部的功能,下来就分享一下我的成果。
  1问题的突破点PerfServletApp.ear
  我在WebSphere根目录AppServer\installableApps里找到了这个程序,部署到WebSphere服务器上,发现它可以获得服务器的所有监控数据。这对我来说很有用,因为我还不知道WebSphere有哪些组件有哪些指标可以监控。我用jd-gui这个java反编译工具将这个程序反编译过来,修改了反编译产生的错误,并添加了所需的jar包,它就可以部署到我的tomcat并监控WebSphere了。
  使用Search and Replace工具(它可以搜索jar)在WebSphere安装目录下找到了所需的jar包com.ibm.ws.admin.client_6.1.0.jar、com.ibm.ws.security.crypto_6.1.0.jar、ibmpkcs.jar、ws_runtime.jar、servlet-api.jar。要注意com.ibm.ws.admin.client_6.1.0.jar和ws_runtime.jar两个jar包中都有javax.servlet的东西,这和tomcat的common\lib中的servlet-api.jar是冲突的,必须用winrar打开这两个jar包,手工删除掉javax文件夹,否则这两个jar包加载不了!
  这几个jar包是必须的(找了好久!最后还是通过在程序中添加System.setProperty("javax.net.debug", "ssl");这句话才调试出了错误原因),因为正常情况下WebSphere服务器安装的时候都添加了安全性,也就是说登录console端是需要输入密码的。所以我们使用JMX连接WebSphere的时候就要接受WebSphere的认证。
  2使用SSL soap连接方式
  为了搞懂这种连接方式如何运作,花费了我很大的工作量。最终在某贴吧上找到了篇神贴,成功导入了证书(参考附件《websphere6.1证书导入.rar》)。然后就是修改PerfServletApp的AdminClient的获取方法了,因为它使用的是AdminServiceFactory.getAdminService()直接从服务器上获得客户端的办法,而我的目标是在我的tomcat上部署,此方法显然不行。下面贴出我的完整连接方法:
  public static AdminClient createConncetion() {
  // System.setProperty("javax.net.debug", "ssl");

回答2:

JMX学习总结 1.产生背景 要了解 JMX,我们就必须对当前的 IT 管理系统有一个初步的了解。随着企业 IT 规模的不断增长,IT 资源(IT resource)数量不断增加,IT 资源的分布也越来越分散。