Пример #1
0
 private List<ServerResource> getServers(List<String> ptqlQueries) {
   List<ServerResource> servers = new ArrayList<ServerResource>();
   // Flag to track success
   Boolean success = false;
   for (final Iterator<String> it = ptqlQueries.iterator(); it.hasNext(); ) {
     String ptql = (String) it.next();
     final long[] pids = getPids(ptql);
     if (null != pids && pids.length > 0) {
       for (int i = 0; i < pids.length; i++) {
         Long pid = pids[i];
         String installPath = getInstallPath(pid);
         if (null == installPath) {
           _log.debug("Found pid " + pid + ", but couldn't identify installpath");
           continue;
         }
         URL bmxUrl = findBmxUrl(installPath, HTTPD_CONF);
         if (bmxUrl == null) {
           _log.debug(
               "Parsing "
                   + installPath
                   + HTTPD_CONF
                   + " failed to find "
                   + "usable Listen directive.");
           continue;
         }
         URL bmxQueryUrl = getBmxQueryUrl(bmxUrl, QUERY_BMX + SERVER_STATUS);
         BmxQuery query = new BmxQuery(bmxQueryUrl);
         BmxResult result = query.getResult();
         try {
           result.parseToProperties();
           success = true;
         } catch (IOException e) {
           _log.debug("Unable to parse results", e);
           continue;
         }
         Properties serverStatus = result.getProperties();
         ServerResource server = createServerResource(installPath);
         ConfigResponse cprop = new ConfigResponse();
         String version = getVersion((String) serverStatus.get("ServerVersion"));
         if (!version.equals(getTypeInfo().getVersion())) {
           // Version not matched
           continue;
         }
         cprop.setValue("version", version);
         cprop.setValue("ServerVersion", (String) serverStatus.get("ServerVersion"));
         server.setCustomProperties(cprop);
         ConfigResponse productConfig = new ConfigResponse();
         productConfig.setValue("process.query", getProcessQuery(ptql, installPath));
         productConfig.setValue("protocol", bmxUrl.getProtocol());
         productConfig.setValue("port", bmxUrl.getPort());
         productConfig.setValue("hostname", bmxUrl.getHost());
         productConfig.setValue("path", bmxUrl.getPath() + QUERY_BMX + SERVER_STATUS);
         setProductConfig(server, productConfig);
         // sets a default Measurement Config property with no values
         setMeasurementConfig(server, new ConfigResponse());
         ConfigResponse controlConfig = getControlConfig(installPath);
         String instanceName = getInstanceName(installPath);
         setControlConfig(server, controlConfig);
         server.setName(
             getPlatformName()
                 + " "
                 + getServerName(RESOURCE_TYPE)
                 + " "
                 + version
                 + " "
                 + instanceName);
         server.setDescription(getServerDescription(server.getInstallPath()));
         servers.add(server);
       }
       if (!success) {
         _log.error(
             "[getServers] Found potential VFWS process however was unable to determine URL of mod_bmx");
         _log.error(
             "[getServers] Make sure -d is specified on command line and that proxying or redirecting isn't including /bmx");
       }
     }
   }
   return servers;
 }