code: public void start() throws IOException {
      Preconditions.checkState(!isStarted(), "JN already running");
     
      journalNodes = getJournalHttpAddresses(conf);
      // crash the JournalNode if the DFS_JOURNALNODE_HOSTS is not configured.
      if (journalNodes.isEmpty()) {
        String msg = JournalConfigKeys.DFS_JOURNALNODE_HOSTS
            + " is not present in the configuration.";
        LOG.fatal(msg);
        throw new IOException(msg);
      }
      LOG.info("JournalNode hosts: " + journalNodes);
      
      validateAndCreateJournalDir(localDir);
      LOG.info("JournalNode storage: " + localDir.getAbsolutePath());
      
      InetSocketAddress socAddr = JournalNodeRpcServer.getAddress(conf);
      // TODO serverId has to be set correctly
      metrics = new JournalNodeMetrics(conf, socAddr.toString());
      
      httpServer = new JournalNodeHttpServer(conf, this);
      httpServer.start();
  
      rpcServer = new JournalNodeRpcServer(conf, this);
      rpcServer.start();
      
      journalSyncer = new JournalNodeJournalSyncer(journalNodes,
          httpServer.getAddress(), conf);
      journalSyncerThread = new Thread(journalSyncer, "Thread-JournalSyncer");
      journalSyncerThread.start();
    }
docs: Start listening for edits via RPC.