@Override
	protected Result doInvoke(Invocation invocation) throws Throwable {
		Socket socket = new Socket(tpURL.getHost(), tpURL.getPort());
		Result result = null;
		try {
			ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
			ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
			oos.writeObject(invocation);
			result = (Result) ois.readObject();
		} catch (IOException e) {
			result = operateException(e);
		} catch (ClassNotFoundException e) {
			result = operateException(e);
		} finally {
			try {
				if (socket != null)
					socket.close();
			} catch (IOException e) {
				result = operateException(e);
			}
		}
		return result;
	}