Hi Francois.

Once again, sorry for the trouble. I keep treating wonder-slim as if I'm the 
only one using or touching it, forgetting to check how my changes affect other 
projects or people. Planning on making a release in the next couple of weeks to 
fix the situation.

The error you're seeing occurs because I changed the default request handler in 
wonder-slim, and I'm not handling the default/initial request yet (should 
probably just be mapped to the Main component by default like in regular WO).
I've added some code to SlimSample to show how this can be handled, until I add 
default handling in wonder-slim itself:

https://github.com/undur/wonder-slim-sample/blob/2c129dc3bbe3efabbba259c3a54e89b162f52495/SlimSample/src/main/java/slim/app/Application.java#L18-L42

The only thing really required was the first two lines, mapping "/". The other 
just demonstrates some of the things you can do with the routing API (under 
development).
You can play around with the URLs listed there (from the server root so invoke 
them using URLs like: http://localhost:12345/plain-response ).

--- Why I'm doing this ---
In regular WO/Wonder applications, the component request handler is the default 
request handler by default (meaning that by default the "Main" component gets 
returned for the initial request).
I've changed this in wonder-slim, so that the default request handler is now a 
"route handler" that checks the URL that was entered and handles the request 
appropriately, as seen in the demonstration code above.
Note this only applies for URLs that don't start with an adaptor prefix. 
Regular WO URLs still work and get handled as normal - that initial request 
failing is the only visible change now if you're not using routing.
The basic idea is based off something I've been using for years in my 
applications. But this particular change makes URLs in development and 
production identical. So:

- https://www.productionsite.com/pages/faq
- http://localhost:1200/pages/faq

…both look and get handled the same way, and that makes life absolutely lovely.

But there's of course really a longer story behind the why.

--- Why I'm ACTUALLY doing this ---
The 404 response returned by the routing request handler if the route is not 
handled, gets a marker key in it's userInfo dictionary:

https://github.com/undur/wonder-slim/blob/8a29554cc7895f363018f18168601de19f1f842c/ERExtensions/src/main/java/er/extensions/routes/RouteTable.java#L170

If the application is using the Jetty adaptor ( 
https://github.com/undur/wo-adaptor-jetty ) it will check for this key and if 
present, the adaptor knows WO didn't handle the request so it passes it to the 
next handler in Jetty's request handler chain for handling:

https://github.com/undur/wo-adaptor-jetty/blob/7e3ffe7101bb6e9e081043fb6036748604629b4b/src/main/java/com/webobjects/appserver/WOAdaptorJetty.java#L216-L219

This allows "WO" applications to exist with other applications, and only urls 
that WO can handle get handled by WO.
"The next handler" in Jetty's chain can be anything. But in my case, that's of 
course the Jetty based ng-objects adaptor :).
This means I can serve WO and ng-objects from the same application, allowing me 
to gradually migrate apps feature-by-feature.
I'll be writing more about this soon, haven't done it yet since it's still 
under development. And these changes shouldn't affect you at all if you're not 
using the routing stuff.

But here's a sample on my own site. The first URL is served by WO, the second 
one by NG.

- https://www.hugi.io/news/
- https://www.hugi.io/ng/

BTW, the routing stuff is unrelated to/not dependent on any of 
wonder/wonder-slim and can be moved to a separate library as a standalone 
feature if anyone is interested in using it. I just added it to "slim" since it 
was quick and easy.

And pardon never being able to answer the simplest question without a wall of 
text.

Cheers,
- hugi



> On 2 Feb 2026, at 20:30, Francois BIENTZ via Webobjects-dev 
> <[email protected]> wrote:
> 
> I’m sorry for the previous post 
> 
> I tried again  the wonder-slim-sample  in a wonder-slim "environment" maven 
> 3.9 , Jdk 25
> 
> When I run the app , I get this message in the browser :
> No route found for URL: /cgi-bin/WebObjects/SlimSample.woa
> 
> Did something change ?
> 
> Thank you 
> Francois

Reply via email to