in plugins/org.apache.karaf.eik.wtp.core/src/main/java/org/apache/karaf/eik/wtp/core/server/KarafServerBehavior.java [150:198]
public void stop(final boolean force) {
mbeanProviderServiceTracker.close();
if (force) {
terminate();
return;
}
final int state = getServer().getServerState();
if (state == IServer.STATE_STOPPED || state == IServer.STATE_STOPPING) {
return;
} else if (state == IServer.STATE_STARTING) {
terminate();
return;
} else {
setServerState(IServer.STATE_STOPPING);
try {
if (mbeanProvider != null && mbeanProvider.isOpen()) {
mbeanProvider.getMBean(FRAMEWORK, FrameworkMBean.class).shutdownFramework();
mbeanProvider.close();
}
} catch (final IOException e) {
}
final Job j = new Job("Waiting for server to stop...") {
@Override
protected IStatus run(final IProgressMonitor monitor) {
try {
final ILaunch launch = getServer().getLaunch();
if (launch != null) {
launch.terminate();
}
} catch (final DebugException e) {
// Do nothing
}
setServerState(IServer.STATE_STOPPED);
return Status.OK_STATUS;
}
};
j.setSystem(true);
j.schedule(SERVER_TERMINATE_JOB_SCHEDULE_DELAY);
}
}