@Override public void init() throws Throwable { cluster = protocolServer.newClient(Cluster.class); cluster.addClusterListener(clusterListener); builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); transformer = TransformerFactory.newInstance().newTransformer(); }
@Override public void stop() { final Semaphore semaphore = new Semaphore(0); cluster.addClusterListener( new ClusterListener.Adapter() { @Override public void leftCluster() { cluster.removeClusterListener(this); semaphore.release(); } }); cluster.leave(); try { if (!semaphore.tryAcquire(5, TimeUnit.SECONDS)) { logger.logMessage("Unable to leave cluster, timeout"); } } catch (InterruptedException e) { Thread.interrupted(); logger.logMessage("Unable to leave cluster, interrupted", e); } }