code: @Override
  	public void run()
  	{
  		ObjectInputStream ois = null;
  		try
  		{
  			ois = new ObjectInputStream(new BufferedInputStream(socket.getInputStream()));
  			clientAddress = socket.getInetAddress().getHostAddress();
  			inetAddressFromClient = socket.getInetAddress();
  			while (true)
  			{
  				final Object object = ois.readObject();
  				process(object);
  			}
  		}
  		catch (final IOException e)
  		{
  			logger.error("An IOException on socket: " + e.toString(), e);
  		}
  		catch (final ClassNotFoundException cnfe)
  		{
  			logger.error("A ClassNotFoundException is thrown:\n " + cnfe.getMessage(), cnfe);
  		}
  		finally
  		{
  			try
  			{
  				if (ois != null)
  				{
  					ois.close();
  				}
  
  				if (socket != null)
  				{
  					socket.close();
  				}
  			}
  			catch (final IOException e)
  			{
  				logger.error("An IOException on socket: " + e.toString(), e);
  			}
  		}
  		logger.info("Socket finished: " + socket);
  	}
docs: {@inheritDoc}