A Jetty-based WOAdaptor. Based on Jetty's own servlet-free APIs making it's relatively simple and lightweigt.
Build/install and add as a dependency to your app. Then pass the launch argument -WOAdaptor WOAdaptorJetty to your application.
<dependency>
<groupId>is.rebbi</groupId>
<artifactId>wo-adaptor-jetty</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>- WebSockets.
- I like having control over the HTTP-serving part of my apps.
- The main adaptor for
ng-objectsis Jetty-based so a Jetty-basedWOAdaptorallowsWOandngto be served from the same app/Jetty server instance.
Works great. Since November 2025 I use it in all of my applications, some of which handle quite a bit of traffic, large file uploads, multipart requests etc.
Running ab locally on my MacBook M4 to serve a simple ~230kb resource returns the following results, so performance is pretty great. Disabling KeepAlive (removing the -k parameter) slows us down by roughly half. Which is probably a more realistic benchmark. Not that common for legit clients to make 15.000 requests/sec to your app.
# ab -k -n 10000 -c 16 http://127.0.0.1:1200/Apps/WebObjects/Hugi.woa/res/app/ZillaSlab-Light.ttf
Concurrency Level: 16
Time taken for tests: 0.692 seconds
Complete requests: 10000
Failed requests: 0
Keep-Alive requests: 10000
Total transferred: 2399870000 bytes
HTML transferred: 2398360000 bytes
Requests per second: 14460.19 [#/sec] (mean)
Time per request: 1.106 [ms] (mean)
Time per request: 0.069 [ms] (mean, across all concurrent requests)
Transfer rate: 3388922.70 [Kbytes/sec] received