123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- package hello;
- import java.io.IOException;
- import java.util.concurrent.*;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import com.fasterxml.jackson.module.afterburner.AfterburnerModule;
- import net.freeutils.httpserver.HTTPServer;
- import net.freeutils.httpserver.HTTPServer.*;
- public class HelloWebServer {
- private static final String HELLO_TEXT = "Hello, World!";
- private static final byte[] HELLO_BYTES = HELLO_TEXT.getBytes();
- private static final String HELLO_LENGTH = Long.toString(HELLO_BYTES.length);
- private static final ObjectMapper MAPPER = new ObjectMapper();
- static {
- MAPPER.registerModule(new AfterburnerModule());
- }
- public static void main(String[] args) throws Exception {
- // parse arguments
- int port = args.length > 0 ? Integer.parseInt(args[0]) : 8080;
- // create server
- HTTPServer server = new HTTPServer(port);
- server.setExecutor(new ThreadPoolExecutor(
- 8, Integer.MAX_VALUE, 300, TimeUnit.SECONDS, new SynchronousQueue<Runnable>()));
- VirtualHost host = server.getVirtualHost(null); // default virtual host
- // add plaintext test handler
- host.addContext("/plaintext", new ContextHandler() {
- @Override
- public int serve(Request req, Response resp) throws IOException {
- resp.getHeaders().add("Content-Type", "text/plain");
- resp.getHeaders().add("Content-Length", HELLO_LENGTH);
- resp.sendHeaders(200);
- resp.getOutputStream().write(HELLO_BYTES);
- return 0;
- }
- });
- // add json test handler
- host.addContext("/json", new ContextHandler() {
- @Override
- public int serve(Request req, Response resp) throws IOException {
- Message msg = new Message(HELLO_TEXT);
- byte[] bytes;
- try {
- bytes = MAPPER.writeValueAsBytes(msg);
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- resp.getHeaders().add("Content-Type", "application/json");
- resp.getHeaders().add("Content-Length", Long.toString(bytes.length));
- resp.sendHeaders(200);
- resp.getOutputStream().write(bytes);
- return 0;
- }
- });
- // start server
- server.start();
- }
- }
|