Contrary to its name, this doesn't necessarily reload the app.
Contrary to its name, this doesn't necessarily reload the app. It is invoked on every request, and will only trigger a reload of the app if something has changed.
Since this communicates across classloaders, it must return only simple objects.
Either - Throwable - If something went wrong (eg, a compile error). - ClassLoader - If the classloader has changed, and the application should be reloaded. - null - If nothing changed.