… to add a non-wall-of-text reply; you can of course also just revert the
change I made by setting the default request handler back to something more
traditional:
public Application() {
setDefaultRequestHandler( requestHandlerForKey(
componentRequestHandlerKey() ) );
// or the DA handler, as I generally preferred:
// setDefaultRequestHandler( requestHandlerForKey(
directActionRequestHandlerKey() ) );
}
- hugi
> On 2 Feb 2026, at 22:17, Hugi Thordarson <[email protected]> wrote:
>
> 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
>