After a little fiddling we succeeded to migrate from 2.3.16 to 2.3.20.
Everything seemed fine until we had an exception in one action and
noticed that something had changed.
Exception thrown from an action got lost. It did not reach the
interceptor in charge of exception handling because...
* The DefaultActionInvocation catched the exception and tried the
unkownHandlerManager.handleUnknownMethod method.
* DefaultActionInvocation tried the
unkownHandlerManager.handleUnknownMethod method because we use the
struts-convention plugin (same version) and that this plugin define
the ConventionUnknownHandler bean.
* Because the ConventionUnkownHandler.handleUnknownActionMethod does
not do anything (it return null and has a big comment saying "Not
used", which is obviously wrong :) ), the result code for the action
is null.
So we fixed this by adding our own UnkownHandler which throws a
NoSuchMethodException which makes the DefaultActionInvocation throw our
original exception. Problem solved, but (there is always a but)
1. Maybe somebody could use this patch
2. I do not understand why the "convention" behavior should be to
ignore action exception and stopping them to spread through the
interceptor stack as they did
3. I think that this behavior should be changed in the
DefaultActionInvocation. It feels unnatural to have to throw a
NoSuchMethodException from an UnkownHandler in order to force the
DefaultActionInvocation to throw our original exception.
Anyway great release, allot of great improvements. Thanks to all
committers for a great release.
--
*Thim Anneessens
IT Department *
ictjob group