ManagementResource.java
package io.extact.rms.external.webapi;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.HttpHeaders;
import jakarta.ws.rs.core.MediaType;
import lombok.extern.slf4j.Slf4j;
import io.extact.rms.platform.stopbugs.SuppressFBWarnings;
/**
* Resources that accept server management commands.
*/
@Path("/mng")
@ApplicationScoped
@Slf4j
public class ManagementResource {
@GET
@Path("stop")
@Produces(MediaType.APPLICATION_JSON)
@SuppressFBWarnings("DM_EXIT")
public String stopApplication(@Context HttpHeaders headers) {
var host = headers.getHeaderString("Host");
if (!host.toLowerCase().startsWith("localhost")) {
log.warn("Ignore because it is a request from other than localhost.[host={}]", host);
return "failed";
}
new Thread( () -> {
log.info("Receive end event: Ends after 3 seconds");
try {
Thread.sleep(3000L);
} catch (InterruptedException e) {
throw new IllegalStateException(e);
}
log.info("Execute: System.exit(0)");
System.exit(0);
} ).start();
return "success";
}
}