After more than two days of debugging, many thanks go to Torsten and Carsten who
helped me to track down the problem, I found out, why the reloading classloader
plugin doesn't propertly reload the Spring application context:
The problem is that the DispatcherServlet contains a map of all mountable
servlet services. This map is initialized in the init() method of the servlet
and will never be reloaded. These servlets have a reference to the first Spring
app context and every reset remains without effect.
The simplest solution that I could think of is adding a check whether the system
runs in dev mode. If true, the code, that collects information about all
available servlet services, is executed every time when the service() method is
called. As this doesn't seem to be expensive I think it's at least not the worst
option.
All other solutions would either make the DispatcherServlet dependant from the
ReloadingClassloader stuff or vice verca. But maybe it's only to late here and I
overlook a simple solution.
--
Reinhard Pötz Independent Consultant, Trainer & (IT)-Coach
{Software Engineering, Open Source, Web Applications, Apache Cocoon}
web(log): http://www.poetz.cc
--------------------------------------------------------------------