@Override
  public void start() {
    if (isStarted()) return;
    try {
      ServerSocket socket = getServerSocketFactory().createServerSocket(
          getPort(), getBacklog(), getInetAddress());
      ServerListener<RemoteReceiverClient> listener = createServerListener(socket);

      runner = createServerRunner(listener, getContext().getScheduledExecutorService());
      runner.setContext(getContext());
      getContext().getScheduledExecutorService().execute(runner);
      super.start();
    } catch (Exception ex) {
      addError("server startup error: " + ex, ex);
    }
  }
@Test
  public void testStartWhenAlreadyStarted() throws Exception {
    appender.start();
    appender.start();
    assertEquals(1, runner.getStartCount());
  }