protected void execExertion(Exertion exertion)
      throws ExertionException, SignatureException, RemoteException {
    ServiceExertion ei = (ServiceExertion) exertion;
    preExecExertion(exertion);

    logger.log(Level.INFO, "Prexec Exertion done .... noe executing exertion");
    try {
      if (ei.isTask()) execTask((NetTask) exertion);
      else throw new ExertionException("Functionality not yet supported");
    } catch (Exception ex) {
      ex.printStackTrace();
      ei.reportException(ex);
      try {
        if (ei.isTask())
          ((MonitoringSession) ((ServiceExertion) exertion).getMonitorSession())
              .changed(((NetTask) exertion).getContext(), State.FAILED);
      } catch (Exception ex0) {
        ex0.printStackTrace();
      } finally {
        ((ServiceExertion) exertion).setStatus(FAILED);
      }
    }
  }