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.6"]
(: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 | ThreadPerTaskExecutor |
ssl-context | Ssl context to be used in https configurator | nil |
To increase performance you can pick executor depending on the use case
| Use case | Executor |
|---|---|
| Throughput | Executors/newVirtualThreadPerTaskExecutor |
| Latency | NioEventLoopGroup |
Robaho httpserver can be added to the dependency list,
which is a drop-in replacement for a com.sun.net.httpserver
[io.github.robaho/httpserver "1.0.29"]
Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.
Can you improve this documentation? These fine people already did:
Jj, jj, ruroru & Håkan RåbergEdit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |