Main.java
public class Main {
static final Logger log = Logger.getGlobal();
public static void main(String[] args) throws Exception {
log.setLevel(Level.INFO);
HttpServer server = new HttpServer();
server.start();
}
}
HttpServer.java
package com.===;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServerConnector;
import org.eclipse.jetty.servlet.ServletHandler;
public class HttpServer {
private Server server;
public void start() {
server = new Server();
ServerConnector http = new ServerConnector(server);
http.setHost("127.0.0.1");
http.setPort(8080);
server.addConnector(http);
ServletHandler servletHandler = new ServletHandler();
servletHandler.addServletWithMapping(MyServlet.class, "/*");
server.setHandler(servletHandler);
try {
server.start();
server.join();
} catch (Exception e) {
}
}
public void stop() {
try {
server.stop();
} catch (Exception e) {
}
}
}
MyServlet.java
package com.===;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.logging.Logger;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.google.gson.Gson;
public class MyServlet extends HttpServlet {
static final Logger log = Logger.getGlobal();
protected void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException {
String path = req.getPathInfo().toString();
String[] paths = path.split("/");
log.info("paths: " + String.join(", ", paths));
switch (paths[1]) {
case "performance":
PerfReqBody perf = getBody(req, PerfReqBody.class);
System.out.println(new Gson().toJson(perf));
break;
case "monitoring":
MonReqBody mon = getBody(req, MonReqBody.class);
System.out.println(new Gson().toJson(mon));
break;
default:
break;
}
res.setStatus(200);
}
protected void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException {
String path = req.getPathInfo().toString();
String[] paths = path.split("/");
log.info("paths: " + String.join(", ", paths));
switch (paths[1]) {
case "cmd1":
Class body = getBody(req, cls);
break;
case "cmd2":
break;
default:
break;
}
res.setStatus(200);
}
public <T> T getBody(HttpServletRequest req, Class<T> cls) throws IOException {
return new Gson().fromJson(getBody(req), cls);
}
public String getBody(HttpServletRequest req) throws IOException {
String body = null;
StringBuilder stringBuilder = new StringBuilder();
BufferedReader bufferedReader = null;
try {
ServletInputStream inputStream = req.getInputStream();
if (inputStream != null) {
bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
char[] charBuffer = new char[128];
int bytesRead = -1;
while ((bytesRead = bufferedReader.read(charBuffer)) > 0) {
stringBuilder.append(charBuffer, 0, bytesRead);
}
}
} catch (IOException ex) {
throw ex;
} finally {
if (bufferedReader != null) {
try {
bufferedReader.close();
} catch (IOException ex) {
throw ex;
}
}
}
body = stringBuilder.toString();
return body;
}
}