@Override
	public void run() {
		if (this.port == -1) {
			this.port = Integer.parseInt(this.serverConfig.get("SERVER_PORT")
					.toString());
		}

		while (this.isRunning) {
			try {
				Socket connection = this.host.accept();
				checkIfHandlerWasShutdown();
				LOG.log(Level.INFO, "Client from "
						+ connection.getInetAddress().toString()
						+ " connected.");
				this.handler.put(new Job(connection));
			} catch (IOException e) {
				LOG.log(Level.SEVERE,
						"IOException occured. Closing ServerSocket. Shutting down...",
						e);
				shutdown();
			}
		}
		try {
			this.handler.shutdown();
			this.host.close();
		} catch (IOException e) {
			LOG.log(Level.SEVERE, "IOException occured while shutting down ...");
			System.exit(1);
		}
	}