java.setOutput(file);
}
// Holds any exception that was thrown during startup
final ObjectHolder errorHolder = new ObjectHolder();
// Start the server int a seperate thread
Thread t = new Thread("Geronimo Server Runner") {
public void run() {
try {
java.execute();
}
catch (Exception e) {
errorHolder.set(e);
//
// NOTE: Don't log here, as when the JVM exists an exception will get thrown by Ant
// but that should be fine.
//
}
}
};
t.start();
log.debug("Waiting for Geronimo server...");
// Setup a callback to time out verification
final ObjectHolder verifyTimedOut = new ObjectHolder();
TimerTask timeoutTask = new TimerTask() {
public void run() {
verifyTimedOut.set(Boolean.TRUE);
}
};
if (verifyTimeout > 0) {
log.debug("Starting verify timeout task; triggers in: " + verifyTimeout + "s");
timer.schedule(timeoutTask, verifyTimeout * 1000);
}
// Verify server started
ServerProxy server = new ServerProxy(hostname, port, username, password);
boolean started = false;
while (!started) {
if (verifyTimedOut.isSet()) {
throw new MojoExecutionException("Unable to verify if the server was started in the given time");
}
if (errorHolder.isSet()) {
throw new MojoExecutionException("Failed to start Geronimo server", (Throwable)errorHolder.get());