The JDK built-in web server with Apache Groovy
In my timeline, I saw a tweet from Joe Walnes about the built-in HTTP server available in the JDK since Java 6. It’s super convenient, starts super fast, easy to use, but I often forget about it. I’d probably not use it for serving planet-wide load, but it’s very useful when you need to create a quick service, a little mock for testing some web or micro-service.
Here’s a little hello world for the fun.
I’m taking advantage of Apache Groovy’s closure-to-functional-interface coercion support, as well as the with{}
method to reuse the HttpServer
instance for two method calls on the same instance (I could’ve used it for the http
variable as well, actually).
import com.sun.net.httpserver.HttpServer
HttpServer.create(new InetSocketAddress(8080), 0).with {
createContext("/hello") { http ->
http.responseHeaders.add("Content-type", "text/plain")
http.sendResponseHeaders(200, 0)
http.responseBody.withWriter { out ->
out << "Hello ${http.remoteAddress.hostName}!"
}
}
start()
}