Clojure ring adapter for
com.sun.net.httpserver.HttpServer
which is included in the JDK.
The main motivation for this is to support starting a small HTTP server inside an application which itself isn't necessary primarily a web app, while avoiding adding any new major dependencies on the classpath.
Add ring-http-exchange to dependency list
[org.clojars.jj/ring-http-exchange "1.2.1"]
For better performance, robaho httpserver can be added to the dependency list. It is a drop-in replacement for a com.sun.net.httpserver
[io.github.robaho/httpserver "1.0.27"]
(:require [ring-http-exchange.core :as server])
(server/run-http-server
(fn [_]
{:status 200
:headers {"Content-Type" "text/html; charset=utf-8"}
:body "hello world"})
{:port 8080
:ssl-context (ssl/keystore->ssl-context
(io/resource "keystore.jks") "keystore-password"
(io/resource "truststore.jks") "truststore-password")
:executor (Executors/newVirtualThreadPerTaskExecutor)})
Response Body Type |
---|
java.lang.String |
java.io.InputStream |
java.io.File |
byte[] |
ring.core.protocols/StreamableResponseBody |
Property | Description | Default value |
---|---|---|
host |
Host name | 0.0.0.0 |
port |
Application port | 8080 |
executor |
Executor to be used | CachedThreadPool |
ssl-context |
Ssl context to be used in https configurator | nil |
Transfer-Encoding
header will be set tochunked
, if it is not possible to get length of the body.
Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.