1 19 package org.apache.geronimo.mavenplugins.geronimo.server; 20 21 import org.apache.maven.plugin.MojoExecutionException; 22 23 import org.apache.geronimo.genesis.util.ObjectHolder; 24 import org.apache.geronimo.mavenplugins.geronimo.ServerProxy; 25 import org.apache.geronimo.mavenplugins.geronimo.reporting.ReportingMojoSupport; 26 27 import java.util.Timer ; 28 import java.util.TimerTask ; 29 30 37 public class WaitForServerMojo 38 extends ReportingMojoSupport 39 { 40 45 private int timeout = -1; 46 47 private Timer timer = new Timer (true); 48 49 53 protected void doExecute() throws Exception { 54 log.info("Waiting for Geronimo server..."); 55 56 final ObjectHolder verifyTimedOut = new ObjectHolder(); 58 59 TimerTask timeoutTask = new TimerTask () { 60 public void run() { 61 verifyTimedOut.set(Boolean.TRUE); 62 } 63 }; 64 65 if (timeout > 0) { 66 log.debug("Starting verify timeout task; triggers in: " + timeout + "s"); 67 timer.schedule(timeoutTask, timeout * 1000); 68 } 69 70 ServerProxy server = new ServerProxy(hostname, port, username, password); 72 boolean started = false; 73 while (!started) { 74 if (verifyTimedOut.isSet()) { 75 throw new MojoExecutionException("Unable to verify if the server was started in the given time"); 76 } 77 78 started = server.isFullyStarted(); 79 80 if (!started) { 81 Throwable error = server.getLastError(); 82 if (error != null) { 83 log.debug("Server query failed; ignoring", error); 84 } 85 86 Thread.sleep(1000); 87 } 88 } 89 90 timeoutTask.cancel(); 92 93 log.info("Geronimo server started"); 94 } 95 96 protected String getFullClassName() { 97 return this.getClass().getName(); 98 } 99 } 100 | Popular Tags |