everything below is just my knowledge :-) comments inlined On Tue, Dec 1, 2009 at 2:01 PM, jkv <j.kumara...@gmail.com> wrote: > > Hello, > > Is using singleton patterns in Tomcat (in servlets programming and deploying > them in tomcat) a really bad idea?? I came accross many forum posts and > wikis that warn about of OOM errors. One really useful post is > http://wiki.apache.org/tomcat/OutOfMemory > http://wiki.apache.org/tomcat/OutOfMemory and this is really worth taking a > look!! > We are having a web application and have four or five singleton patterns, > they are really necessary as singletons patterns, such as Xml parsers and > Applications properties reader. I have some questions when they say. "server > being unable to reclaim the space for the entire webapp class loader". > > 1) Will I be getting OOM errors only when I redeploy a war file (with > singleton patterns) several times without re-starting my Tomcat? Or I will > be getting the OOM errors even if I didnot redeploy the war file and the > server crashes after some days?? >
Yes. The OOME are only redeploy related, they don't affect normal production sites. > 2) I dont think we can GC a conventional singleton pattern by using a > ServletContextListener, as the private instance variable is hard coded and > we cannot access it from outside(and set it to null) as its never visible to > the outside world unless we try using reflection?? Use the 'new' singleton pattern with enums. This should be free of OOMEs: public enum MySingletonClass{ INSTANCE; //functionality.... } access it simply by: MySingletonClass.INSTANCE.method()... regards Leon --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org