Neste post iremos montar um servidor HTTP simples em Java. Útil para obter informações simples de uma aplicação rodando um background por exemplo.
O projeto completo pode ser baixado no Github: https://github.com/pcollares/exemplos-blog/tree/master/SimpleHTTPServer
O primeiro passo é criar uma instância do servidor http nativo:
HttpServer servidor = HttpServer.create(new InetSocketAddress(8080), 0);
Nesse exemplo ele irá executar na porta 8080.
Agora adiciono um novo contexto e uma classe, que criaremos abaixo que será quem irá resolver as requisições.
servidor.createContext("/", new Root());
Bastando iniciar o servidor agora
servidor.start();
Nesse exemplo, a classe Root que irá responder as requisições feitas para o contexto ‘/’ e deve implementar a interface HttpHandler para que o método handle prepare o retorno que será enviado no corpo da resposta http.
Para isso, crio um StringBuilder para facilitar a concatenação das Strings:
StringBuilder out = new StringBuilder();
out.append("<html>");
out.append("<head>");
out.append("<title>Ola mundo").append("</title>");
out.append("</head>");
out.append("<body>");
out.append("Olá mundo");
out.append("</body>");
out.append("</html>");
E escrevo essa saída como um array de bytes:
he.sendResponseHeaders(200, out.toString().length());
try (OutputStream os = he.getResponseBody()) {
os.write(out.toString().getBytes("ISO-8859-1"));
}
O resultado pode ser visto acessando http://localhost:8080/
No código completo no Github, adicionei mais uma página de exemplo (/stats) que demonstra como pode ser útil para obter informações do Hardware e do sistema operacional, como memória, uso do disco, processador, threads, etc…
[]’s
Top comments (0)