public void run() { try { isStarting = true; synchronized (this) { serverSocket = new ServerSocket(0); this.port = serverSocket.getLocalPort(); setRunning(true); isStarting = false; this.notifyAll(); } System.err.println("Child-process heartbeat server started on port: " + port); while (true) { Socket sock = serverSocket.accept(); log("Got heartbeat connection from client; starting heartbeat."); synchronized (heartBeatThreads) { HeartbeatThread hbt = new HeartbeatThread(sock); heartBeatThreads.add(hbt); hbt.start(); } } } catch (Exception e) { if (!running) log("Heartbeat server was shutdown."); else log("Got expcetion in heartbeat server: " + e.getMessage()); } finally { setRunning(false); log("Heartbeat server terminated."); } }
/** * Starts the channel. * * @param svc int - what service to start * @throws ChannelException Start error * @see org.apache.catalina.tribes.Channel#start(int) */ @Override public synchronized void start(int svc) throws ChannelException { setupDefaultStack(); if (optionCheck) checkOptionFlags(); super.start(svc); if (hbthread == null && heartbeat) { hbthread = new HeartbeatThread(this, heartbeatSleeptime); hbthread.start(); } }