On Fri, 24 Jan 2003, Tolles, James wrote:

>
> It seems like re-loading a new jsp workw easily and well, only the new
> jsp gets loaded, the application is not restarted. But, if a servelt is
> updated, Tomcat (if reload is on) begins a sequence: tries to serialize
> the session adn save it; reloads the app; then restore the session. Is
> it a class loader issue that prevents tomcat from treating the new
> servlet class tha same as a new jsp?
>

The JSP page compiler goes to an incredible amount of work to make that
happen -- essentially, it creates a new class loader for every JSP page,
and throws that class loader (and therefore the page class) away when you
modify the page.

This works for JSP because the Java code is all generated by the compiler
(well, you can still screw up and cause memory leaks with your scriptlets,
but there's nothing that any server can do about that), and it tries to
ensure that only the container itself ever keeps a reference to the actual
object for the generated page.  Therefore, it can throw away its reference
and have a high degree of confidence that the old object is now GC-able.

For servlets (or for JavaBeans in general), there is no way for the
container to know how many other objects have references to that servlet
-- and that turns out to be pretty common, so the strategy would not be
effective anyway.

Some very early first-generation servlet containers were set up this way,
but it turned out not to work in practice.

Craig



--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to