code: @Override
  	public final String process(final IoSession session, final String... args) {
  		RemoteProgram remoteProgram = null;
  		// Get the corresponding remoteProgram
  		try {
  			remoteProgram = parseCommandLine(args);
  
  			final Class<?> jobClass = (Class<?>) remoteProgram
  					.getAdapterClass();
  			final Launcher launcher = Launcher.getLauncher();
  
  			final Launch<?> launch = launcher.newLaunch(jobClass);
  
  			for (IOption ioption : this.getOptions()) {
  				ioption.process(launch, remoteProgram);
  			}
  
  			final LaunchResult launchResult = launch.synchLaunch().getLaunchResult();
  			String status = null;
  			String userErrorCode = null;
  			if (launchResult == null) {
  				status = ProgramReturnCodes.NOTSTARTED.name();
  			} else {
  				status = String.valueOf(launchResult.getStatusCode());
  				userErrorCode = String.valueOf(launchResult.getReturnCode());
  			}
  
  			return LaunchingMessageKind.ILAUNCH0003.getFormatedMessage(
  					jobClass.getCanonicalName(), launch.getLaunchId(), status, userErrorCode);
  		} catch (ParseException e) {
  			return e.getMessage();
  		} catch (ParserException e) {
  			return e.getFormatedMessage();
  		} catch (OptionException e) {
  			return e.getFormatedMessage();
  		} catch (LaunchException e) {
  			return LaunchingMessageKind.ELAUNCH0008
  					.format(remoteProgram != null ? remoteProgram
  							.getAdapterClass() : "unknown",e);
  		} catch (Exception e) {
  			return LaunchingMessageKind.ELAUNCH0008
  					.format(remoteProgram != null ? remoteProgram
  							.getAdapterClass() : "unknown",e.getMessage(), e);
  		}
  	}
docs: /*
  (non-Javadoc)
  
  @see
  org.parallelj.launching.transport.tcp.command.AbstractTcpCommand#process
  (org.apache.mina.core.session.IoSession, java.lang.String[])