Wicket doesn't clean up properly when hot-deploying; hangs onto Class 
references.
---------------------------------------------------------------------------------

                 Key: WICKET-625
                 URL: https://issues.apache.org/jira/browse/WICKET-625
             Project: Wicket
          Issue Type: Bug
          Components: wicket, wicket-extensions, wicket-spring
    Affects Versions: 1.3.0-beta1
            Reporter: Alastair Maw
            Assignee: Alastair Maw


When you undeploy a webapp, ideally it should go away and its WebAppClassLoader 
should be garbage collected. There are various reasons this won't happen, but 
they essentially split into two problems:

1) The App Server has references to classes in the WebAppClassLoader in its own 
objects (on Tomcat these are typically commons logging statics in 
StandardContext in catalina, or some of the jakarta code). There's not much you 
can do about this, short of getting a better app server.

2) You hold references to Class objects loaded by your WebAppClassLoader in 
static fields in other Classes loaded by your WebAppClassLoader.

Number 2 can be solved by the use of WeakReferences to the Class objects.

Note that you also need to be careful about classes that have Class references 
internally, such as java.lang.reflect.Method and Field. You can also hold these 
items in a WeakReference, but they have the potential to be garbage collected 
randomly, unlike the underlying Class objects.

I have some patches that allow me to start up and shut down a Spring-backed 
Wicket-based app and have the classloader cope properly. They could probably do 
with some review.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to