以编程方式访问Websphere Application Server及其资源

时间:2011-07-15 05:01:51

标签: websphere jmx

这是我关于StackOverflow的第一个问题所以,请耐心等待。

我想要实现的目标是什么?

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

  1. 适配器
  2. 连接器
  3. 我目前正在采用'连接器'方法,而SOAP连接器也是如此(因为它的防火墙友好性)

    所以,我的代码就是这样......


    // Initialize the AdminClient.
    Properties adminProps = new Properties();
    
    adminProps.setProperty("type", AdminClient.CONNECTOR_TYPE_SOAP );
    adminProps.setProperty("host", "localhost");
    adminProps.setProperty("port", "8880");
    AdminClient adminClient = AdminClientFactory.createAdminClient(adminProps);
    
    String query = "WebSphere:*";
    //String query = "WebSphere:type=Server,*";
    ObjectName queryName = new ObjectName(query);
    Set s = adminClient.queryNames(queryName, null);
    if (!s.isEmpty()) {
        iter = s.iterator();
        while (iter.hasNext()) {
            ObjectName nodeagent = (ObjectName) iter.next();
        System.out.println("*********************************************");
            System.out.println("KeyPropertyList: " + nodeagent.getKeyPropertyListString());
        }
    }
    

    使用这段代码,我能够获得WAS特定实例(C:\ Program Files \ IBM \ WebSphere \ AppServer \ profiles \ AppSrv01)上所有MBean的列表,并成功打印密钥 - 物业清单。

    现在我有一份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实例上的所有应用程序

    [query,SamplesGallery,ivtApp,DefaultApplication,PlantsByWebSphere]

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

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

    其他细节: IBM WebSphere Application Server,7.0.0.0(基本安装)

    先谢谢, AJ

2 个答案:

答案 0 :(得分:1)

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

您可以从Application和J2EEApplication(JSR 88)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包开始。

答案 1 :(得分:0)

尝试

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

mbean的标识符在哪里