예제 #1
0
 @Override
 public void init() throws Throwable {
   cluster = protocolServer.newClient(Cluster.class);
   cluster.addClusterListener(clusterListener);
   builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
   transformer = TransformerFactory.newInstance().newTransformer();
 }
예제 #2
0
  @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);
    }
  }