BayouServer.java 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package bayou;
  2. import bayou.http.*;
  3. import bayou.mime.ContentType;
  4. import com.fasterxml.jackson.core.JsonProcessingException;
  5. import com.fasterxml.jackson.databind.ObjectMapper;
  6. import java.util.Collections;
  7. /**
  8. * bayou.io HTTP Server for TechEmpower/FrameworkBenchmarks
  9. */
  10. public class BayouServer
  11. {
  12. public static void main(String[] args) throws Exception
  13. {
  14. System.setProperty("bayou.http.server.pipeline", "true" ); // favor pipelined requests
  15. System.setProperty("bayou.http.server.fiber", "false"); // fiber not needed in this app
  16. byte[] bytesHelloWorld = "Hello, World!".getBytes();
  17. HttpServer server = new HttpServer(request->
  18. {
  19. switch(request.uri())
  20. {
  21. case "/json" :
  22. Object obj = Collections.singletonMap("message", "Hello, World!");
  23. return new SimpleHttpResponse(HttpStatus.c200_OK, ContentType.json, toJson(obj));
  24. case "/plaintext" :
  25. return new SimpleHttpResponse(HttpStatus.c200_OK, ContentType.text_plain, bytesHelloWorld);
  26. default :
  27. return HttpResponse.text(404, "Not Found -- ", request.uri() );
  28. }
  29. });
  30. server.conf().setProxyDefaults(); // disable some non-essential features
  31. //server.conf().trafficDump(System.out::print);
  32. server.start();
  33. }
  34. // json - jackson -------------------------------------------------------------------------------------
  35. // pretty slow; don't care much.
  36. static final ObjectMapper objectMapper = new ObjectMapper();
  37. static byte[] toJson(Object obj)
  38. {
  39. try{
  40. return objectMapper.writeValueAsBytes(obj);
  41. }catch (JsonProcessingException e){
  42. throw new RuntimeException(e); // HTTP 500 Internal Error
  43. }
  44. }
  45. }