@SuppressWarnings("unchecked")
	public void loadConfiguration() throws InvalidConfigurationException, FileNotFoundException, IOException, ParseException {
		appSettings = new HashMap<String, Object>();
		
		log.debug("Conf File: " + confFile);
		
		JSONParser parser = new JSONParser();
		
		Object obj = parser.parse(new FileReader(confFile));
		JSONObject jsonObject = (JSONObject) obj;
		
		Long executionTime = (Long) jsonObject.get(Config.EXECUTION_TIME);
		if(executionTime == null) {
			log.debug("Execution time not found. Defaulting to [{}]", Config.EXECUTION_TIME);
			executionTime = Config.DEFAULT_EXECUTION_TIME;
		}

		appSettings.put(Config.EXECUTION_TIME, executionTime.intValue());
		appSettings.put(Config.GRAPHITE_HOST, (String) jsonObject.get(Config.GRAPHITE_HOST));
		
		try {
			Long graphitePort = (Long) jsonObject.get(Config.GRAPHITE_PORT);
			if(graphitePort != null) {
				appSettings.put(Config.GRAPHITE_PORT, graphitePort.intValue());
			}
		} catch (Exception e ) {
			log.error("Error Parsing Integer from '" + Config.GRAPHITE_PORT + "' From " + confFile);
			log.error("Correct format is \"graphitePort\" : 2003,");
		}
		
		List<ApacheServer> apacheServers = new ArrayList<ApacheServer>();
		
		JSONArray apacheServersJson = (JSONArray) jsonObject.get(Config.APACHE_SERVERS);
		
		if(apacheServersJson != null) {
			Iterator<JSONObject> iterator = apacheServersJson.iterator();
			
			while (iterator.hasNext()) {
				apacheServers.add(parseApacheServer(iterator.next()));
			}
			
			appSettings.put(Config.APACHE_SERVERS, apacheServers);
		}
		
		validateConfiguration(confFile);
	}