code: @Override
  	public void run() {
  		try {
  			ClientHandler.logger.info("hanlding client request");
  			final ObjectInputStream in = new ObjectInputStream(this.client.getInputStream());
  			final Object object = in.readObject();
  			if (object instanceof MethodCallInfo) {
  				ClientHandler.logger.info("request received : " + object);
  				final MethodCallInfo info = (MethodCallInfo) object;
  				final MethodsCaller caller = new MethodsCaller();
  				ClientHandler.logger.info("call method");
  				caller.callMethod(info);
  				info.setParamters();// workaround to the jasper paramaters by
  									// reference.
  				ClientHandler.logger.info("writing back the caller results:".concat(info.toString()));
  				final ObjectOutputStream out = new ObjectOutputStream(this.client.getOutputStream());
  				out.writeObject(info);
  			} else {
  				ClientHandler.logger.warning(object + "not instanceof MethodCallInfo");
  			}
  		} catch (IOException | ClassNotFoundException e) {
  			throw new RuntimeException(e);
  		} finally {
  			ClientHandler.logger.info("Closing client connection");
  			try {
  				this.client.close();
  			} catch (final IOException e) {
  			}
  		}
  	}
docs: Handle the client connection as follows :
  <ul>
  <li>read the object sent by client using {@link ObjectInputStream}</li>
  <li>Check if the sent object is instance of {@link MethodCallInfo}, if not
  warn the user and then return</li>
  <li>Create instance of {@link MethodsCaller} and call the call method with
  the {@link MethodCallInfo} as parameter.</li>
  <li>Fill the {@link MethodCallInfo} with the results and write it back to the
  socket using {@link ObjectOutputStream}
  <li>
  <ul>