以编程方式访问WebSphereApplicationServer及其资源

以编程方式访问WebSphereApplicationServer及其资源,websphere,jmx,Websphere,Jmx,这是我关于StackOverflow的第一个问题,请耐心听我说 我想要实现什么 我需要编写一个独立的程序来访问WebSphereApplicationServer的一个或多个实例,并从中获取详细信息。就我的研究而言,有两种方法可以做到这一点 适配器 连接器 我目前正在采用“连接器”的方法,而SOAP连接器也是如此(因为它具有防火墙友好性) 所以,我的代码应该是这样的 通过这段代码,我能够获得WAS特定实例上所有MBean的列表(C:\Program Files\IBM\WebSphere\A

这是我关于StackOverflow的第一个问题,请耐心听我说

我想要实现什么

我需要编写一个独立的程序来访问WebSphereApplicationServer的一个或多个实例,并从中获取详细信息。就我的研究而言,有两种方法可以做到这一点

  • 适配器
  • 连接器
  • 我目前正在采用“连接器”的方法,而SOAP连接器也是如此(因为它具有防火墙友好性)

    所以,我的代码应该是这样的



    通过这段代码,我能够获得WAS特定实例上所有MBean的列表(C:\Program Files\IBM\WebSphere\AppServer\profiles\AppSrv01),并且它成功地打印了密钥属性列表

    现在我有一个MBean列表。接下来呢? 链接:_http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.websphere.javadoc.doc/web/mbeanDocs/index.html

    我的问题是:

    如何获取我感兴趣的特定MBean实例并获取所有相关属性

    例如:

    AppManagement appM = AppManagementProxy.getJMXProxyForClient (adminClient);
    System.out.println(appM.listApplications(null, null, null));
    
    将列出WAS特定实例上的所有应用程序

    [查询、示例库、ivtApp、默认应用程序、PlantsByWebSphere]

    我有兴趣了解更多有关已安装应用程序的信息,比如,它们是否已启动并正在运行?如果是这样,IP地址、内部版本号、是否正在维护等(仅引用它们作为示例)如果我能够获得MBean可以提供的应用程序的所有可能细节,那么它将完成我的任务(部分)

    上面提到的只是一个例子,我想从MBean中获得更多。因此,请提供一个解决方案/示例代码,帮助我从WAS实例提供的任何MBean获取信息。(使用JMX)

    其他详情: IBM WebSphere Application Server,7.0.0.0(基本安装)

    提前感谢,,
    AJ

    通过查询所有服务器并检查应用程序是否在每个服务器上运行,然后从每个服务器查找主机,可以间接获得IP地址。我不确定是否有版本号。“维护中”是什么意思

    您可以从应用程序和J2EEApplication(JSR88)MBean获得更多信息。因此,ObjectName(“WebSphere:type=Application,name=myapp”)是特定于WebSphere的,或者ObjectName(“WebSphere:type=J2EEApplication,name=myapp”)

    您可以使用ConfigServiceProxy并查询getid(“/DefaultApplication:myapp/”)来获取配置信息。您可以查看PROFILE_HOME/config/cells/CELL/applications/APP.ear/deployments/APP/deployment.xml以查看配置文件中可用的信息类型。您可以将其与WAS_HOME/web/configDocs/中的类型信息相匹配,从appdeployment包开始。

    试试看

    String query = "WebSphere:*,mbeanIdentifier=<XXX>";
    
    String query=“WebSphere:*,mbeanIdentifier=”;
    

    mbean的标识符在哪里

    感谢您的快速回复。所谓“维护中”,我的意思是应用程序在维护期间可能会停机。因此,当它关闭时,它可能无法从中获取数据。无论如何,ConfigServiceProxy可以用于ConfigService类型的MBean(如果我错了,请纠正我)。我在哪里可以找到访问MBean的更全面的方法列表,以及我们是否有这里提到的代理(AppManagementProxy、ConfigServiceProxy),还是必须依赖繁琐且容易出错的AdminClient.invoke(ObjectName、operation、params、signature);方法?是的,ConfigServiceProxy允许访问ConfigService,这是用于导航所有WAS配置的MBean。我不确定是否有一个全面的代理列表。我想说,写自己的是一个好主意,只是为了避免MBean交互将您的主要逻辑弄乱。再次感谢您如此快速的响应。。这是我第一次做的事情。那么,你能告诉我如何编写我自己的代理吗?它是否像我们最后要写的助手?像MBeanHelper.getServerMbeans这样的东西?(我们编写的MBeanHelper类)只需编写一个具有AdminClient实例变量的helper类,然后根据需要添加委托给AdminClient.invoke的方法(ObjectName、op、params、sig)。这就是预先提供的代理所做的一切。
    String query = "WebSphere:*,mbeanIdentifier=<XXX>";